LinkedList

阅读更多
LinkedList


一、总结

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 Entry header = 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 c) {
	this();
	addAll(c);
    }






博文参考:
http://www.cnblogs.com/ITtangtang/p/3948610.html

你可能感兴趣的:(LinkedList)