老师您好,我想问一个非常基础的问题,关于set集合这种数据类型,底层的实现问题。
通过以往的学习和了解,集合的底层都是通过哈希表来实现的,当我们存或者取的时候,根据key计算出其对应数组的位置,该位置上可能是一个链表,然后再寻找链表中对应该key的value。
但是无论是哪种语言,或者是redis中,set都实现了一个方法叫pop,也就是随机取出一个值,这种对于set结构,他随机取出其中一个值是如何来实现的呢?还是说,每个set都维护了一个值,来表示这个set内部数组第一个有数值位置的索引,所谓随机取出只是取出了该第一个索引位置的第一个key