随机数据结构:跳表(SkipList)
随机数据结构:跳表(SkipList)😘
它是一种可以用来快速查找的数据结构,类似于平衡树。当相较于平衡树,跳表的插入和删除只需要对整个数据结构的局部进行操作即可,带来的好处是:只需部分锁即可保证线程安全,时间复杂度也是O(logn)
1.跳表本质是同时维护了多个链表,而且链表是分层的
最低层的链表维护了跳表内所有的元素,每上面一层链表都是下面一层的子集,一个元素插入那些层是随机的。
2.如何查找
查找时,从顶级链表开始找。一旦发现被查找的元素大于当前链表中的元素,就会转入下一层链表继续找,整个查找过程是跳跃式的
3.跳表实现Map和使用哈希算法实现Map的不同
哈希并不会保存元素的顺序,而跳表内所有的元素都是排序的,因此对跳表进行遍历时,你会得到一个有序的结果
4.关键数据结构
①Node,节点
对Node的所有操作,使用CAS方法
(1)设置value
(2)设置next字段
②Index,索引,它内部包装Node,同时增加了向下的引用和向右的引用
整个跳表就是根据Index进行全网的组织的
③还需要一个称为HeadIndex的数据结构,表示链表头部的第一个Index,用于记录当前处于哪一层