类 SkipList<K,​V>

  • 所有已实现的接口:
    Iterable<Entry<K,​V>>

    public class SkipList<K,​V>
    extends Object
    implements Iterable<Entry<K,​V>>
    跳表实现 1. 数据节点层数大于0小于等于31,缺省层数13 2. 支持获取和删除首元素和尾元素 3. 支持数据正向和逆向迭代 4. 支持自定义数据比较器
    作者:
    frankcl
    • 构造器详细资料

      • SkipList

        public SkipList()
      • SkipList

        public SkipList​(int maxLevel)
      • SkipList

        public SkipList​(Comparator<? super K> comparator)
      • SkipList

        public SkipList​(int maxLevel,
                        Comparator<? super K> comparator)
    • 方法详细资料

      • add

        public boolean add​(K key,
                           V value)
        添加数据 1. 数据key存在更新数据值,不存在添加数据 2. 新增数据节点层数随机生成,保证最大层数不超过当前层数加1 3. 添加节点后需要调整前后相关节点的前向及后向节点引用
        参数:
        key - 数据key,如果key为null抛出异常NullPointerException
        value - 数据值,如果value为null抛出异常NullPointerException
        返回:
        如果key存在,使用value覆盖原值并返回false,否则返回true
      • remove

        public V remove​(K key)
        根据key删除数据 1. 如果key不存在,不进行任何操作并返回null,否则删除数据并返回数据值 2. 删除数据节点后需要进行以下调整 a)需要调整前后向相关节点的节点引用 b)可能需要降低跳表当前层数
        参数:
        key - 数据key,如果key为null抛出异常NullPointerException
        返回:
        成功返回数据值,否则返回null
      • get

        public V get​(K key)
        根据key获取值
        参数:
        key - 数据key,如果key为null抛出异常NullPointerException
        返回:
        如果存在返回数据值,否则返回null
      • removeFirst

        public Entry<K,​V> removeFirst()
        移除首元素 1. 如果跳表为空返回null 2. 删除首元素,需要进行相关调整 a)需要调整前后向相关节点的节点引用 b)可能需要降低跳表当前层数
        返回:
        如果表为空返回null,否则返回首元素
      • removeLast

        public Entry<K,​V> removeLast()
        移除尾元素 1. 如果跳表为空返回null 2. 删除尾元素,需要进行相关调整 a)需要调整前后向相关节点的节点引用 b)可能需要降低跳表当前层数
        返回:
        如果表为空返回null,否则返回尾元素
      • getFirst

        public Entry<K,​V> getFirst()
        获取首元素,如果跳表为空返回null
        返回:
        成功返回元素值,否则返回null
      • getLast

        public Entry<K,​V> getLast()
        获取尾元素值,如果跳表为空返回null
        返回:
        成功返回元素值,否则返回null
      • isEmpty

        public boolean isEmpty()
        列表是否为空
        返回:
        列表为空返回true,否则返回false
      • size

        public int size()
        获取数据数量
        返回:
        数据数量
      • reversedIterator

        public Iterator<Entry<K,​V>> reversedIterator()
        获取逆向数据迭代器
        返回:
        逆向数据迭代器