写点什么

LinkedList 源码分析(四)

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

    阅读完需:约 5 分钟


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

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

💒 公众号:知识浅谈


LinkedList 源码分析(四)总结


正菜来了⛳⛳⛳

🎈LinkedList 源码分析

🍮E peekFirst()

含义: 从列表中找到最开始的一个元素,如果 first 为 null 的话,就返回 null,否则就返回 f 对应的 item。


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

🍮E peekLast()

含义:从列表中找到最后一个元素,如果 last 为 null 的话,就返回 null,否则就返回 f 对应的 item。


public E peekLast() {    final Node<E> l = last;    return (l == null) ? null : l.item;}
复制代码

🍮E pollFirst()

含义:检索并删除此列表的第一个元素,如果此列表为空,则返回 null。


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

🍮E pollLast()

含义:检索并删除此列表的最后一个元素,如果此列表为空,则返回 null。


public E pollLast() {    final Node<E> l = last;    return (l == null) ? null : unlinkLast(l);}
复制代码

🍮void push(E e)

含义:将元素推送到此列表表示的堆栈上。换句话说,在这个列表的前面插入元素。


public void push(E e) {    addFirst(e);}
复制代码


函数里边调用了 addFirst(e),就是把 e 这个元素添加到 list 的第一个位置。

🍮E pop()

含义:这个的意思是从列表中删除第一个位置的元素,并返回删除的元素,函数里边嗲用的 removeFirst 就是这个含义。从此列表表示的堆栈中弹出一个元素。换句话说,删除并返回此列表的第一个元素。


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

🍮E removeFirstOccurrence()

含义:删除此列表中第一次出现的指定元素(从头到尾遍历列表时)。如果列表不包含该元素,则它不变。


public boolean removeFirstOccurrence(Object o) {   return remove(o);}
复制代码

🍮boolean removeLastOccurrence(Object o)

含义:删除此列表中指定元素的最后一次出现(从头到尾遍历列表时)。如果列表不包含该元素,则它不变。


public boolean removeLastOccurrence(Object o) {    if (o == null) {        for (Node<E> x = last; x != null; x = x.prev) {            if (x.item == null) {                unlink(x);                return true;            }        }    } else {        for (Node<E> x = last; x != null; x = x.prev) {            if (o.equals(x.item)) {                unlink(x);                return true;            }        }    }    return false;}
复制代码

🍮ListIterator<E> listIterator(int index)

含义:返回从指定 index 索引位置开始的一个迭代器,首先先判断 index 这个位置是不是超出链表的范围。


public ListIterator<E> listIterator(int index) {    checkPositionIndex(index);    return new ListItr(index);}
复制代码


从上述函数中,我们可以看到,checkPositionIndex(index)是用来检查 index 是否满足要求的,接着我们往下看。

🍮void checkPositionIndex(int index)

含义:这个函数的意思就是检查 index 这个索引是否满足条件,index 是否在链表的长度范围内,isPositionIndex()函数比较的 index 是否大于等于 0 且小于等于 size,如果不在范围内,就抛出异常。


private void checkPositionIndex(int index) {    if (!isPositionIndex(index))        throw new IndexOutOfBoundsException(outOfBoundsMsg(index));}
复制代码

🍚总结

以上是关于 LinkedList 源码中存在的部分函数的解读,希望有所帮助。

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

知识浅谈

关注

公众号:知识浅谈 2022.06.22 加入

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

评论

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