LinkedList源代码分析

继承AbstractSequentialList,实现List,Deque,Cloneable,Serializable

Deque:一个线性 collection,支持在两端插入和移除元素。deque 是“double ended queue(双端队列)”的缩写,通常读为“deck”。

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable


属性:
 private transient Entry<E> header = new Entry<E>(null, null, null); //内部类 实现链表
 private transient int size = 0;  //长度


构造函数:
public LinkedList() {
        header.next = header.previous = header; //指向头
    }


内部类(链表数据结构)
 private static class Entry<E> {
	E element;               //元素
	Entry<E> next;           //下指针
	Entry<E> previous;      //上指针

	Entry(E element, Entry<E> next, Entry<E> previous) { //内部类构造函数
	    this.element = element;
	    this.next = next;
	    this.previous = previous;
	}
    }

添加元素
 public boolean add(E e) {
	addBefore(e, header);
        return true;
    }

接着看一下addBefore
封装链表实现
private Entry<E> addBefore(E e, Entry<E> entry) {
	Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);
	newEntry.previous.next = newEntry;
	newEntry.next.previous = newEntry;
	size++;
	modCount++;
	return newEntry;
    }

你可能感兴趣的:(java,数据结构)