LinkedList
程序员文章站
2022-06-04 19:31:37
...
[align=center][size=large]LinkedList[/size][/align]
一、总结
1.基于 jdk 1.8 源码分析
2.
二、类声明
1.继承 AbstractSequentialList
2.实现 Deque
二、成员变量及构造方法
博文参考:
[url]http://www.cnblogs.com/ITtangtang/p/3948610.html[/url]
一、总结
1.基于 jdk 1.8 源码分析
2.
二、类声明
/**
* Linked list implementation of the <tt>List</tt> interface. Implements all
* optional list operations, and permits all elements (including
* <tt>null</tt>). In addition to implementing the <tt>List</tt> interface,
* the <tt>LinkedList</tt> class provides uniformly named methods to
* <tt>get</tt>, <tt>remove</tt> and <tt>insert</tt> 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}. <p>
* 允许所有元素均为 null
*
*
* The class implements the <tt>Deque</tt> interface, providing
* first-in-first-out queue operations for <tt>add</tt>,
* <tt>poll</tt>, along with other stack and deque operations.<p>
* 实现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.<p>
*
* <p><strong>Note that this implementation is not synchronized.</strong>
* If multiple threads access a linked list concurrently, and at least
* one of the threads modifies the list structurally, it <i>must</i> 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:<pre>
* List list = Collections.synchronizedList(new LinkedList(...));</pre>
*
* <p>The iterators returned by this class's <tt>iterator</tt> and
* <tt>listIterator</tt> methods are <i>fail-fast</i>: if the list is
* structurally modified at any time after the iterator is created, in
* any way except through the Iterator's own <tt>remove</tt> or
* <tt>add</tt> 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.
*
* <p>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 <tt>ConcurrentModificationException</tt> on a best-effort basis.
* Therefore, it would be wrong to write a program that depended on this
* exception for its correctness: <i>the fail-fast behavior of iterators
* should be used only to detect bugs.</i>
*
* <p>This class is a member of the
* <a href="{@docRoot}/../technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
* @version 1.67, 04/21/06
* @see List
* @see ArrayList
* @see Vector
* @since 1.2
* @param <E> the type of elements held in this collection
*/
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
1.继承 AbstractSequentialList
2.实现 Deque
二、成员变量及构造方法
//
private transient Entry<E> header = new Entry<E>(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);
}
博文参考:
[url]http://www.cnblogs.com/ITtangtang/p/3948610.html[/url]
上一篇: HashMap的源码分析
下一篇: 如何修改飞信密码 手机飞信怎么改密码
推荐阅读
-
java语法ArrayList、LinkedList、HashSet、HashMap、HashTable、Collection、Collections详解
-
Java中LinkedList原理代码解析
-
ArrayList和LinkedList区别及使用场景代码解析
-
java中集合(LinkedList、HashSet、HashMap、HashTable、Collection、Collections)
-
linkedlist和arraylist的区别是什么(java的四种引用关系从强到弱)
-
linkedlist和arraylist的区别是什么(java的四种引用关系从强到弱)
-
Java Linkedlist原理及实例详解
-
java中集合(LinkedList、HashSet、HashMap、HashTable、Collection、Collections)
-
java语法ArrayList、LinkedList、HashSet、HashMap、HashTable、Collection、Collections详解
-
C#双向链表LinkedList排序实现方法