skipList
跳表是一个多层有序链表,与红黑树都用于列表排序,在写操作较多,并发写场景下红黑树结构会产生严重的性能问题,为保持红黑树性质,需要对整个树进行加锁,并且需要翻转节点来维持平衡。跳表在这种情况下比较有优势,跳表的平均时间复杂度为log(n),与红黑树相差不大,在频繁写或并发写只需要维护节点两端的链接关系,消耗较小。跳表的层级是在一定范围内随机的,不需要严格维护层级数。redis的zset就是基于跳表数据结构实现的。java中ConcurrentSkipListMap基于跳表实现。