LinkedList源码分析(三)

举报
知识浅谈 发表于 2022/10/09 09:16:18 2022/10/09
【摘要】 LinkedList源码分析(三)

在这里插入图片描述

🍁 作者:知识浅谈,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源码函数分析解读总结,希望对你有所帮助。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。