Collections Framework の概要の注釈
Collections Framework は以下の要素で構成されます。
コレクションインタフェース
- コレクションを操作する主要な手段
Collection
- オブジェクトのグループ。コレクションの順序付けおよび重複する要素を含んでいるかどうかについては何も考慮しない
Set
- よく使用される、セットの抽象化。要素の重複は許可されない。順序付けはされていても、されていなくてもよい。
Collection
インタフェースを拡張する
List
- 順序付けされたコレクション。 「シーケンス」とも呼ばれる。一般に重複は許可される。位置によるアクセスを許可する。
Collection
インタフェースを拡張する
Queue
- 処理を行う前に要素を保持するために設計されたコレクション。基本的な
Collection
操作だけでなく、キューは追加的な挿入、例外処理および検査といった操作を提供する
Map
- キーから値へのマッピング。各キーを 1 つの値へマッピングできる
SortedSet
- 「自然順序」 (
Comparable
インタフェースを参照) によって、または
SortedSet
のインスタンスの生成時に提供される
Comparator
オブジェクトによって、自動的にソートされる要素のセット。
Set
インタフェースを拡張する
SortedMap
- マッピングがキーにより自動的にソートされるマップ。 ソートは、キーの「自然順序」、または
SortedMap
のインスタンスの生成時に提供される Comparator により行われる。
Map
インタフェースを拡張する
BlockingQueue
- 要素を取り出すときに、キューが空にならないために待機する操作で使用する
Queue
。また要素を格納するときにキューで利用可能になるスペースを待機する (このインタフェースは
java.util.concurrent
パッケージの一部になる)
ConcurrentMap
- 基本メソッド、
putIfAbsent
、
remove
、および
replace
を使用する
Map
(このインタフェースは、
java.util.concurrent
パッケージの一部になる)
汎用の実装
- コレクションインタフェースの主実装
HashSet
-
Set
インタフェースのハッシュテーブル実装。Set インタフェースの、もっとも用途の広い実装
TreeSet
SortedSet
インタフェースの赤 - 黒ツリー実装
LinkedHashSet
-
Set
インタフェースのハッシュテーブルとリンクリスト実装。
HashSet
と同等の実行速度を持つ、挿入順
Set
実装
ArrayList
-
List
インタフェースのサイズ変更可能な配列の実装 (本来、同期をとらない
Vector
)。
List
インタフェースのもっとも用途の広い実装
LinkedList
-
List
インタフェースの、ダブルリンクリスト実装。要素がリスト内で頻繁に挿入あるいは削除される場合には、
ArrayList
よりも高いパフォーマンスを発揮することがある。双方向キュー (待機解除) で使用されることがある。また、
Queue
インタフェースを実装する。
Queue
インタフェースを介してアクセスされた場合、
LinkedList
は FIFO キューとして動作する
PriorityQueue
- アンバウンド形式の優先度キューのヒープ実装
HashMap
-
Map
インタフェースのハッシュテーブル実装 (本来、
null
のキーおよび値をサポートする、同期をとらない
Hashtable
)。
Map
インタフェースのもっとも用途の広い実装
TreeMap
SortedMap
インタフェースの赤 - 黒ツリー実装
LinkedHashMap
-
Map
インタフェースのハッシュテーブルとリンクリスト実装。挿入順に実行される
Map
実装であり、
HashMap
と同じくらい高速で実行される。キャッシュを構築する場合にも役立つ (
removeEldestEntry(Map.Entry)
を参照)
ラッパー実装
- ほかの実装と併用して機能を拡張するための実装。static ファクトリメソッドを介して単独でアクセスされる
Collections.unmodifiable
Interface
- ユーザがあるコレクションを変更しようとすると、そのコレクションの変更できないビューを返し、
UnsupportedOperationException
をスローする
Collections.synchronized
Interface
- 指定された (一般には同期をとらない) コレクションに基づく、同期化されたコレクションを返す。基となるコレクションへのアクセスがすべて、返されたコレクションを通して行われる限り、スレッドの安全性は保証される
Collections.checked
Interface
- あるコネクションの動的型保証ビューを返し、クライアントが間違った型の要素を追加しようとした場合
ClassCastException
をスローする。言語にある汎用の機構によりコンパイル時に静的な型チェックが行われますが、この機構を無効化することも可能。動的型保証ビューはこの可能性を完全に解決する
簡易実装
- コレクションインタフェースの高性能な「ミニ実装」
Arrays.asList
- 配列をリストとして表示可能にする
EMPTY_SET
、
EMPTY_LIST
および
EMPTY_MAP
- 空のセットおよびリストを表す定数 (不変)
singleton
、
singletonList
、および
singletonMap
- 指定されたオブジェクト (またはキー値のマッピング) だけを含む、不変な「単独」セット、リスト、またはマップを返す
nCopies
- 指定されたオブジェクトの n 個のコピーからなる不変なリストを返す
レガシー実装
- 以前からあるコレクションクラスが改良されて、コレクションインタフェースを実装するようになった
Vector
- 「レガシーメソッド」を持つ
List
インタフェースの、同期化され、サイズ変更可能な配列実装
Hashtable
-
Map
インタフェースの同期化されたハッシュテーブル実装。 「レガシーメソッド」では、
null
キーまたは
null
値は許可されない
特殊目的の実装
WeakHashMap
- キーへの
弱参照
だけを格納する
Map
インタフェースの実装。弱参照だけを格納することにより、キーが
WeakHashMap
の外部から参照されなくなると、キー値のペアをガベージコレクトすることができる。このクラスを利用すると、弱参照をもっとも簡単に利用することができる。キーがどのスレッドからもアクセスできなくなると、エントリの有用性がなくなる「レジストリ的」なデータ構造を実装する場合に役立つ
IdentityHashMap
- 識別情報ベースの Map 実装であり、ハッシュテーブルに基づいています。直列化やディープコピーなどのように、トポロジを維持しながらオブジェクトグラフを変形する場合に、このクラスは便利です。このような変形を行うには、どのオブジェクトが表示済みかを追跡する識別情報ベースの「ノードテーブル」を保守する必要があります。同一性ベースのマップを使って、動的なデバッガや同様のシステムでオブジェクトとメタ情報のマッピングを保守することもできます。また、同一性ベースのマップは equals メソッドを意図的に歪ませることによって発生する「不正行為」を防ぐ場合に有用です。(
IdentityHashMap
がキーに対して equals メソッドを呼び出すことはありません。)この実装のもう 1 つの利点は、高速だということです。
CopyOnWriteArrayList
- copy-on-write 配列を基とする
List
実装。すべての推移的操作 (
add
、
set
および
remove
など) は、配列の新しいコピーの作成により実装される。反復中でも同期は不要であり、反復子は
ConcurrentModificationException
をスローしないことが保証される。この実装はイベントハンドラリストの維持に最適 (変更がまれで、トラバーサルは頻繁に発生し、時間がかかる可能性があるため)
CopyOnWriteArraySet
- copy-on-write 配列を基とする
Set
実装。この実装は
CopyOnWriteArrayList
と本質的に同様です。ほかのほとんどの
Set
実装と異なり、
add
、
remove
、および
contains
メソッドはセットのサイズに比例するタイムが必要。この実装は、重複を回避する必要があるイベントハンドラリストの維持に最適
EnumSet
- bit-vector を基とする高性能の
Set
実装。各
EnumSet
インスタンスのすべての要素は、単一の列挙型の要素でなければならない
EnumMap
- 配列を基とする高性能の
Map
実装。各
EnumMap
インスタンスのすべてのキーは単一の列挙型の要素でなければならない
並列実装
- これらの実装は
java.util.concurrent
パッケージの一部である
ConcurrentLinkedQueue
- リンクノードに基づくアンバウンド形式の FIFO (先入れ先出し) キュー
LinkedBlockingQueue
- リンクノードを基とする、任意のバウンド形式の FIFO ブロッキングキュー
ArrayBlockingQueue
- 配列を基とするバウンド形式の FIFO ブロッキングキュー
PriorityBlockingQueue
- 優先順位ヒープを基とする、アンバウンド形式のブロッキング優先度キュー
DelayQueue
- 優先順位ヒープを基とする、時間ベースのスケジュールキュー
SynchronousQueue
-
BlockingQueue
インタフェースを利用する簡単な認識メカニズム
ConcurrentHashMap
- ハッシュテーブルに基づく、高度に並列され、高性能な
ConcurrentMap
実装。この実装は取得を実行するときにブロックせず、クライアントが更新する並行処理のレベルの選択を許可する。これは、
Hashtable
に対するドロップイン式の置き換えとして想定された。
ConcurrentMap
を実装することに加えて、
Hashtable
に固有のすべての「レガシー」メソッドをサポートする
抽象実装
- カスタム実装を容易にする、コレクションインタフェースの骨格実装
AbstractCollection
- セットでもリストでもない (「バッグ」やマルチセットのような)
Collection
の骨格実装
AbstractSet
-
Set
の骨格実装
AbstractList
- ランダムアクセスデータの格納 (配列など) を基とする
List
の骨格実装
AbstractSequentialList
- シーケンシャルアクセスデータの格納 (リンク設定されたリストなど) を基とする
List
の骨格実装
AbstractQueue
-
Queue
の骨格実装
AbstractMap
-
Map
の骨格実装
アルゴリズム
sort(List)
- マージソートアルゴリズムを使ったリストのソート。このアルゴリズムは、高品質なクイックソートと同程度の性能を持つ。クイックソートより優れている点として、O(n*log n) を保証するパフォーマンスと「安定性」がある (安定したソートは、等価な要素の並べ替えを行わない)
binarySearch(List, Object)
- バイナリサーチアルゴリズムを使ってソートされたリスト内の要素を検索する
reverse(List)
- リスト内の要素の順序を逆転する
shuffle(List)
- リスト内の要素をランダムに並べ替える
fill(List, Object)
- リストのすべての要素を指定の値で上書きする
copy(List dest, List src)
- 元のリストを宛先のリストにコピーする
min(Collection)
- コレクション内の最小要素を返す
max(Collection)
- コレクション内の最大要素を返す
rotate(List list, int distance)
- リストにあるすべての要素を、指定した距離だけ回転させる
replaceAll(List list, Object oldVal, Object newVal)
- 指定した値をすべて別の値に置き換える
indexOfSubList(List source, List target)
- ターゲットと等しいソースの最初のサブリストのインデックスを返す
lastIndexOfSubList(List source, List target)
- ターゲットと等しいソースの最後のサブリストのインデックスを返す
swap(List, int, int)
- 指定したリスト内の指定した位置にある要素をスワップする
frequency(Collection, Object)
- あるコネクションにおいて指定した要素が発生した回数を計算する
disjoint(Collection, Collection)
- 2 つのコレクションが互いに無関係である、つまり一般的な要素を含まないかどうかを判定する
addAll(Collection<? super T>, T...)
- 指定した配列のすべての要素を指定したコレクションに追加する
インフラストラクチャ
Iterators
-
Enumeration
インタフェースに似ているが、より強力で、メソッド名が改良されている
Iterator
-
Enumeration
インタフェースの機能に加えて、巧みに定義された有用なセマンティクスによって、ユーザが、基になるコレクションから要素を削除できるようになる
ListIterator
- リストに対して使用する反復子。Iterator インタフェースの機能に加えて、双方向の繰り返し、要素の置換、要素の挿入およびインデックスの取得をサポートする
順序付け
Comparable
- これを実装するクラスに対し、「自然順序付け」の機能を提供する。自然順序付けは、リストのソート、またはソートされたセットやマップ内の順序の維持に使用される。多くのクラスが、このインタフェースを実装するために改良された
Comparator
- 順序付けの関連を表し、リストのソート、またソートされたセットやマップ内の順序の維持に使用される。ある型の自然順序付けをオーバーライドしたり、
Comparable
インタフェースを実装していない型のオブジェクトの順序付けを行うことができる
実行時例外
UnsupportedOperationException
- サポートしていない操作の呼び出し時に、コレクションによりスローされる
ConcurrentModificationException
- 反復の進行中に、基になるコレクションに対して予期しない変更が行われた場合、反復子およびリスト反復子によりスローされる。基になるリストに予期しない変更が行われた場合も、リストのサブリストビューによりスローされる
パフォーマンス
RandomAccess
-
List
の実装が高速ランダムアクセス (通常は一定時間) をサポートしていることを示すためのマーカインタフェースです。これにより汎用アルゴリズムがランダムアクセスリストまたは順次アクセスリストのいずれかに適用されるとき、その動作を変更してパフォーマンスを向上することができます。
配列ユーティリティ
Arrays
- プリミティブ配列およびオブジェクト配列に対して、ソート、検索、比較、ハッシュ、
String
への変換、および埋め込みを行う静的メソッドを含む
Copyright ©
1995-2004
Sun Microsystems, Inc.
All Rights Reserved.
コメントの送付先:
collections-comments@java.sun.com
Java ソフトウェア