一、总结
1.基于 jdk 1.8 源码分析
2.
二、类声明
/** * Linked list implementation of the List interface. Implements all * optional list operations, and permits all elements (including * null). In addition to implementing the List interface, * the LinkedList class provides uniformly named methods to * get, remove and insert an element at the * beginning and end of the list. These operations allow linked lists to be * used as a stack, {@linkplain Queue queue}, or {@linkplain Deque * double-ended queue}.* 允许所有元素均为 null * * * The class implements the Deque interface, providing * first-in-first-out queue operations for add, * poll, along with other stack and deque operations.
* 实现Deque接口,添加元素时如同 先进先出 的队列 * * All of the operations perform as could be expected for a doubly-linked * list. Operations that index into the list will traverse the list from * the beginning or the end, whichever is closer to the specified index.
* *
Note that this implementation is not synchronized. * If multiple threads access a linked list concurrently, and at least * one of the threads modifies the list structurally, it must be * synchronized externally. (A structural modification is any operation * that adds or deletes one or more elements; merely setting the value of * an element is not a structural modification.) This is typically * accomplished by synchronizing on some object that naturally * encapsulates the list. * 非线程安全的实现 * If no such object exists, the list should be "wrapped" using the * {@link Collections#synchronizedList Collections.synchronizedList} * method. This is best done at creation time, to prevent accidental * unsynchronized access to the list:
* List list = Collections.synchronizedList(new LinkedList(...));* *The iterators returned by this class's iterator and * listIterator methods are fail-fast: if the list is * structurally modified at any time after the iterator is created, in * any way except through the Iterator's own remove or * add methods, the iterator will throw a {@link * ConcurrentModificationException}. Thus, in the face of concurrent * modification, the iterator fails quickly and cleanly, rather than * risking arbitrary, non-deterministic behavior at an undetermined * time in the future. * *
Note that the fail-fast behavior of an iterator cannot be guaranteed * as it is, generally speaking, impossible to make any hard guarantees in the * presence of unsynchronized concurrent modification. Fail-fast iterators * throw ConcurrentModificationException on a best-effort basis. * Therefore, it would be wrong to write a program that depended on this * exception for its correctness: the fail-fast behavior of iterators * should be used only to detect bugs. * *
This class is a member of the * * Java Collections Framework. * * @author Josh Bloch * @version 1.67, 04/21/06 * @see List * @see ArrayList * @see Vector * @since 1.2 * @param
the type of elements held in this collection */ public class LinkedList extends AbstractSequentialList implements List , Deque , Cloneable, java.io.Serializable
1.继承 AbstractSequentialList
2.实现 Deque
二、成员变量及构造方法
// private transient Entryheader = new Entry (null, null, null); private transient int size = 0; /** * Constructs an empty list. */ public LinkedList() { header.next = header.previous = header; } /** * Constructs a list containing the elements of the specified * collection, in the order they are returned by the collection's * iterator. * * @param c the collection whose elements are to be placed into this list * @throws NullPointerException if the specified collection is null */ public LinkedList(Collection extends E> c) { this(); addAll(c); }
博文参考:
http://www.cnblogs.com/ITtangtang/p/3948610.html