LinkedList源码解析

来源:互联网 发布:软件测试管理制度 编辑:程序博客网 时间:2024/05/09 19:01

android-sdk/android-23/java/util/LinkedList.java

LinkedList实现了List、Deque、Queue接口,说明他可以当做列表、双端队列、队列用

属性:

  • transient Link<E> voidLink;
    它的next域指向双向链表的头结点、previous域指向双向链表的尾节点
  • 长度:size

节点对象,采用双向链表。

private static final class Link<ET> {    ET data;    Link<ET> previous, next;    Link(ET o, Link<ET> p, Link<ET> n) {        data = o;        previous = p;        next = n;    }}

集合初始化

voidLink字如其名,是个空引用,只包含引用,不会实际存储数据。起作用的就是它的previous和next

public LinkedList() {    voidLink = new Link<E>(null, null, null);    voidLink.previous = voidLink;    voidLink.next = voidLink;}

添加

头插法

private boolean addFirstImpl(E object) {    Link<E> oldFirst = voidLink.next;    Link<E> newLink = new Link<E>(object, voidLink, oldFirst);    voidLink.next = newLink;    oldFirst.previous = newLink;    size++;    modCount++;    return true;}

尾插法

private boolean addLastImpl(E object) {    Link<E> oldLast = voidLink.previous;    Link<E> newLink = new Link<E>(object, oldLast, voidLink);    voidLink.previous = newLink;    oldLast.next = newLink;    size++;    modCount++;    return true;}
0 0