写点什么

LinkedList 源码分析(三)

作者:知识浅谈
  • 2022 年 10 月 10 日
    吉林
  • 本文字数:1613 字

    阅读完需:约 5 分钟


🍁 作者:知识浅谈,CSDN 博客专家,阿里云签约博主,InfoQ 签约博主,华为云云享专家

📌 擅长领域:全栈工程师、爬虫、ACM 算法

💒 公众号:知识浅谈


LinkedList 源码分析(三)总结

正菜来了⛳⛳⛳

🎈LinkedList 源码函数

🍮boolean contains(Object o)

含义:这个函数的意思就是查看对象 o 是不是在 linkedList 中存在,存在了就返回 true,否则就返回 false。


public boolean contains(Object o) { return indexOf(o) != -1;}
复制代码


可以看到函数中调用了 indexOf(o)这个函数,这个函数的意思是查找 o 对象在 linkedlist 中的位置,我们接着往下看

🍮int indexOf(Object o)

含义:这个函数的作用就是从列表中查找对应存在的值是否有等于 o 的,如果没有返回-1,有的话返回第一次出现和 o 相同元素的索引,可以看到在最开始有一个判断,判断 o 是不是为空,如果不为空,使用 equals 方法,如果 o 为空,使用==符号。


public int indexOf(Object o) {        int index = 0;        if (o == null) {            for (Node<E> x = first; x != null; x = x.next) {                if (x.item == null)                    return index;                index++;            }        } else {            for (Node<E> x = first; x != null; x = x.next) {                if (o.equals(x.item))                    return index;                index++;            }        }        return -1;    }
复制代码

🍮int lastIndexOf(Object o)

含义:返回此列表中指定元素最后一次出现的索引,如果此列表不包含该元素,则返回 -1。更正式地说,返回满足 (o==null ? get(i)==null : o.equals(get(i))) 的最高索引 i,如果没有这样的索引,则返回 -1。


public int lastIndexOf(Object o) {        int index = size;        if (o == null) {            for (Node<E> x = last; x != null; x = x.prev) {                index--;                if (x.item == null)                    return index;            }        } else {            for (Node<E> x = last; x != null; x = x.prev) {                index--;                if (o.equals(x.item))                    return index;            }        }        return -1;    }
复制代码

🍮E peek()

含义:检索但不删除此列表的头部(第一个元素),如果第一个元素为空,则就返回 null。


public E peek() {    final Node<E> f = first;    return (f == null) ? null : f.item;}
复制代码

🍮E element()

含义:这个和上边的这个有点区别,就是返回第一个元素,但是是调用 getFirst()函数,这个函数中会先判断第一个元素是不是 null,如果是 null,就抛出异常,否则就返回第一个元素。


    public E element() {        return getFirst();    }
复制代码

🍮E poll()

含义:这个函数是用于删除第一个元素的,如果第一个元素为空的话直接返回 null,也就是表示删除的元素,否则的话,就调用 unlinkFirst(f) 返回 f 这个头节点并把头节点 first 指向其下一个节点。


public E poll() {    final Node<E> f = first;    return (f == null) ? null : unlinkFirst(f);}
复制代码

🍮E remove()

含义:移除列表中的第一个元素,函数中调用了 removeFirst 函数,这个函数中会先判断是不是第一个是 null,是 null 的话就会抛出异常,否则就会把 first 指向的元素的下一个用 first 指向。


public E remove() {    return removeFirst();}
复制代码

🍮offer(E e)

含义:offer(E e) 就是在原来的 list 列表上添加一个元素 e,其内部还是调用的 add(e)函数来实现的。


public boolean offer(E e) { return add(e);}
复制代码

🍮offerFirst(E e)

含义:offerFirst(E e) 就是在原来的 list 列表的第一个位置上添加一个元素 e,其内部还是调用的 addFirst(e)函数来实现的。


public boolean offerFirst(E e) {    addFirst(e);    return true;}
复制代码

🍚总结

以上是关于 LinkedList 源码函数分析解读总结,希望对你有所帮助。

发布于: 刚刚阅读数: 3
用户头像

知识浅谈

关注

公众号:知识浅谈 2022.06.22 加入

🍁 作者:知识浅谈,InfoQ签约作者,CSDN博客专家/签约讲师,华为云云享专家,阿里云签约博主,51CTO明日之星 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号:知识浅谈 🔥 联系方式vx:zsqtcc

评论

发布
暂无评论
LinkedList源码分析(三)_linkedlist_知识浅谈_InfoQ写作社区