1日1クラス、少しも疲れていないLinkedList
5328 ワード
私たちのスローガンは、一日一種類で、少しも疲れません.の
今日お話しするのは--LinkedList
まず、彼の組織構造を見てみましょう.
前回紹介した2つのクラスに比べて、彼の実装インタフェースにはQueue&Dequeが1つ増えています(1つはキューで、1つは両端キューです)
これもリストが実現する以上、同様にリストのいくつかの性質を有する、リスト中のオブジェクトがNULLであることを覚えているかどうかは不明である.
APIの公式サイトでは、「Note that this implementation is not synchronized.」つまりLinkedListも非スレッドで安全です.
ArrayListと同様に、ライブラリにスレッドセキュリティの実装方法があります.
List list = Collections.synchronizedList(new LinkedList(...));
スレッド以外の安全な容器には、そのオブジェクトの変化回数を記録するカウンタmodCountがある.
【まず、このLinkedListでは、firstとlastの2つのオブジェクトを維持しています.データ型はノードの内部クラスです.
1、構造方法:
Constructs an empty list.
Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator.
2、まず特別に説明します.
Transient,このようなオブジェクトはシーケンス話を進行する際にシーケンス化される必要はなく,一時的である.
ソースを読むときによくこのキーワードが出てくるからです.
3、これはチェーンテーブルなので、チェーンテーブルに関する操作がいくつか提供されています.
e.g. getFirst() getLast()......
4、注目すべきは1.6から、逆順を生成できる反復器である称道の方法(自分では容易に実現できるが)が追加されたことである.
これにより、特定の場面でのニーズを満たすことができます.
わあ、この類は言うことが少ないですね.~~~~
いくら言わないで、もっと考えて練習しています.
中国にはことわざがある.
聞かなければ聞かず、聞かなければ見ず、見ては知らず、知ってはいけない.
今日お話しするのは--LinkedList
まず、彼の組織構造を見てみましょう.
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
前回紹介した2つのクラスに比べて、彼の実装インタフェースにはQueue&Dequeが1つ増えています(1つはキューで、1つは両端キューです)
これもリストが実現する以上、同様にリストのいくつかの性質を有する、リスト中のオブジェクトがNULLであることを覚えているかどうかは不明である.
APIの公式サイトでは、「Note that this implementation is not synchronized.」つまりLinkedListも非スレッドで安全です.
ArrayListと同様に、ライブラリにスレッドセキュリティの実装方法があります.
List list = Collections.synchronizedList(new LinkedList(...));
スレッド以外の安全な容器には、そのオブジェクトの変化回数を記録するカウンタmodCountがある.
【まず、このLinkedListでは、firstとlastの2つのオブジェクトを維持しています.データ型はノードの内部クラスです.
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;
}
}
1、構造方法:
LinkedList()
Constructs an empty list.
LinkedList(Collection<? extends E> c)
Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator.
2、まず特別に説明します.
Transient,このようなオブジェクトはシーケンス話を進行する際にシーケンス化される必要はなく,一時的である.
ソースを読むときによくこのキーワードが出てくるからです.
3、これはチェーンテーブルなので、チェーンテーブルに関する操作がいくつか提供されています.
e.g. getFirst() getLast()......
4、注目すべきは1.6から、逆順を生成できる反復器である称道の方法(自分では容易に実現できるが)が追加されたことである.
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 }
これにより、特定の場面でのニーズを満たすことができます.
わあ、この類は言うことが少ないですね.~~~~
いくら言わないで、もっと考えて練習しています.
中国にはことわざがある.
聞かなければ聞かず、聞かなければ見ず、見ては知らず、知ってはいけない.