美文网首页
LinkedList源码解析

LinkedList源码解析

作者: 第一号伤心人 | 来源:发表于2018-03-14 10:34 被阅读3次

    LinkedList 是有序并且可以元素重复的集合,底层是基于双向链表的。

    源码分析

    构造方法

    构造方法一个是默认的,另外一个是传入一个集合,然后调用 addAll 方法添加集合所有的元素

    Node

    每个节点都包含了前一个节点 prev 以及后一个节点 next ,item 就是要当前节点要存储的元素

    add方法

            在 linkLast(E e) 中,先去判断了原来的尾节点是否为空。如果尾节点是空的,那么就说明原来的列表是空的。会将头节点也指向该元素;如果不为空,直接在后面追加即可。其实在 first 之前,还有一个为 null 的 head 节点。head 节点的 next 才是 first 节点。

    add重载方法add(int index, E element)

    node方法

    linkBefore方法

    addAll方法

    addAll(int index, Collection c) 其实就是相当于多次进行 add(int index, E element) 操作,在内部循环添加到链表上。

    get方法

    在内部调用了 node(index) 方法,而 node(index) 方法在上面已经分析过了。就是判断在前半段还是在后半段,然后遍历得到即可。

    remove 方法

    remove(int index) 中调用了 unlink(Node x) 方法来移除该节点 remove(Object o) 的代码就是遍历链表,然后得到相等的值就把它 unlink(x) 了。

    set方法

    clear方法

    相关文章

      网友评论

          本文标题:LinkedList源码解析

          本文链接:https://www.haomeiwen.com/subject/riymfftx.html