咱們的口號是,一天一個類,一點也不累 。。java
今天要講的是---LinkedList安全
首先,仍是看看他的組織結構ide
Class LinkedList<E> java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util.AbstractSequentialList<E> java.util.LinkedList<E> Type Parameters: E - the type of elements held in this collection All Implemented Interfaces: Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E> public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
相比上兩次介紹的兩個類,他的實現接口多了一個Queue & Deque(一個是隊列一個是雙端隊列)this
既然這個也實現了List,一樣具備List的一些性質,不知你們是否還記得List中的對象允許爲NULL.spa
在API的官網上面明確說了一句:【Note that this implementation is not synchronized.】 也就是說LinkedList也是非線程安全的。
線程
和ArrayList同樣,庫中存在線程安全的實現方法:code
List list = Collections.synchronizedList(new LinkedList(...));對象
因此在非線程安全的容器裏面會有一個用來記錄該對象改變次數的計數器modCount.
blog
【首先聲明一下,這個LinkedList裏面維持這兩個對象,一個是first,一個是last,他們的數據類型是Node的內部類。接口
private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } }
一、構造方法:
LinkedList()
LinkedList(Collection<? extends E> c)
1 /** 2 * Adapter to provide descending iterators via ListItr.previous 3 */ 4 private class DescendingIterator implements Iterator<E> { 5 private final ListItr itr = new ListItr(size()); 6 public boolean hasNext() { 7 return itr.hasPrevious(); 8 } 9 public E next() { 10 return itr.previous(); 11 } 12 public void remove() { 13 itr.remove(); 14 } 15 }
這樣以來就知足了在特定場合的須要。
哇喔,這個類要說的好少啊!~~~
再也不說的多少,而在多思多練。
中國有句諺語:
不聞不若聞之,聞之不若見之,見之不若知之,知之不若行之。