Collections Framework の概要 |
Collections Framework の主な利点は、次のとおりです。
Collections Framework は、以下の要素で構成されます。
コレクションインタフェースの変更メソッドには、すべて「省略可能」というラベルが付いています。 実装によっては、いくつかのオペレーションが実行されないことがあります。実行しようとすると、実行時例外 (UnsupportedOperationException) がスローされます。 実装のドキュメントには、実装でサポートされるオプションのオペレーションを記述する必要があります。 この仕様を理解するための助けとして、いくつかの用語が導入されています。
実装によっては、格納する要素 (Maps の場合はキーおよび値) を限定する場合があります。 要素を限定する条件には、次のようなものがあります。
実装の制限に適合しない要素を追加しようとすると、実行時例外が発生します。 典型的な実行時例外には、ClassCastException、IllegalArgumentException、また NullPointerException があります。 実装の制限に適合しない要素を削除またはテストしようとすると、「制限付きのコレクション」のどれかがその使用法を許可しているとしても、例外が発生します。
実装 | |||||
---|---|---|---|---|---|
ハッシュテーブル | サイズ変更可能な配列 | バランスツリー | リンクリスト | ||
インタフェース | セット | HashSet | TreeSet | ||
リスト | ArrayList | LinkedList | |||
マップ | HashMap | TreeMap |
汎用の実装は、コレクションインタフェースの省略可能なオペレーションをすべてサポートしています。 また、格納する要素に制限はありません。 これらの実装は非同期ですが、Collections クラスには、「同期ラッパー」と呼ばれる静的ファクトリが含まれます。 同期ラッパーは、同期をとらないコレクションに同期をとる機能を追加するために使用されます。 新規の実装にはすべて、「フェイルファスト反復子」が含まれます。 フェイルファスト反復子は、不正な並列変更を探知し、素早く、クリーンにフェイルします。不規則な動作はしません。
AbstractCollection、AbstractSet、AbstractList、AbstractSequentialList、および AbstractMap クラスは、コアコレクションインタフェースのスケルトン実装を提供し、実装に必要な手間を最小限に抑えます。 これらのクラスの API ドキュメントには、各メソッドがどのように実装されているかが説明されているため、実装者は、特定の実装の「基本オペレーション」のパフォーマンスに基づき、どのメソッドをオーバーライドしたらよいかがわかります。
設計上の主要な目標は、実際のサイズにおいて、またより重要性の高い「概念の重さ」においても妥当な小ささの API を作成することでした。 現在の Java プログラマにとって、この新機能が違和感のないものにするということも非常に重要な点でした。 このため、既存の機能を置き換えるのではなく、機能を追加する必要がありました。 同時に、この新しい API は、上記の利点すべてを提供できるような強力なものにする必要がありました。
コアインタフェースを小さく保つために、インタフェースはこのようなわずかな違いを可変、修正、サイズ変更としてはとらえません。 コアインタフェースでのある種の呼び出しは「省略可能」であり、実装は、特定の省略可能なオペレーションに関しては UnsupportedOperationException をスローして、サポートしないことを示せるようにしました。 もちろん、コレクションの実装者は、実装が省略可能なオペレーションのうち、どれをサポートしているかをドキュメントに明示する必要があります。
各コアインタフェース内のメソッドの数を少数に保つために、メソッドが次のどれかの場合にだけ、インタフェースはメソッドを格納します。
コレクションの妥当な表現が、すべて相互運用可能であることは重要な要件です。 この表現には配列が含まれます。 配列は、言語を変えずに直接 Collection インタフェースを実装することはできません。 このため、フレームワークには、コレクションを配列にダンプできるメソッド、コレクションと見なすことのできる配列、およびコレクションと見なすことのできるマップが含まれています。
Copyright © 1995-99 Sun Microsystems, Inc. All Rights Reserved. コメントの送付先: collections-comments@java.sun.com |
Java ソフトウェア |