Javaのコレクション・フレームワーク
ロングの前にJava 2では、Javaはアドホックのカテゴリが用意されています。 たとえば、次のようにオブジェクトのグループを格納し、操作するために使用される辞書、ベクトル、スタック、およびプロパティクラス。
これらのクラスは非常に便利ですが、彼らは中央、統一テーマを欠いているが。 このため、Vectorクラスの方法を使用して、Propertiesクラスは非常に異なる方法を持って使用します。
コレクションフレームワークは、以下の目的を満たすように設計されています。
- フレームワークは、高性能である必要があります。 基本セット(動的配列、リンクリスト、木、ハッシュテーブル)実装では、効率的でなければなりません。
- フレームワークは、相互運用性の高い同様に、コレクションの異なるタイプのを可能にします。
- コレクションの拡張と適応は簡単でなければなりません。
この目的を達成するために、コレクション全体のフレームワークは、標準的なインターフェイスのセットを中心に設計されています。 加えて、あなたはまた、これらのインタフェースを介して、独自のコレクションを実装することができ、LinkedListは、HashSetの、TreeSetのなど:あなたは、次のような達成するために、これらの標準インターフェースを使用することができます。
コレクションフレームワークは、コレクションを表現し、操作するために使用される統一されたアーキテクチャです。 すべてのコレクションフレームワークには、次のものが含まれています。
- インターフェース:これは、抽象データ型がコレクションを表します。 インターフェイスは、その代表者のコレクションの詳細に依存しない操作を可能にします。 オブジェクト指向言語では、インターフェイスは、一般的に階層を形成します。
- 実装(クラス):インターフェイスのコレクションの実現です。 本質的に、それらは再利用可能なデータ構造です。
- アルゴリズム:検索とソート:例えば、実行の収集方法でインタフェースを実装するいくつかの有用な計算オブジェクト。 これらのアルゴリズムは、同じ方法が同様のインタフェース上で異なる実装を持つことができるので、それは、マルチステートと呼ばれています。
コレクションに加えて、フレームワークは、いくつかの地図のインタフェースとクラスを定義しています。 マップは、キー/値のペアに格納されています。 地図ではないのコレクションにもかかわらず、彼らは完全にコレクションに統合されています。
コレクションインタフェース
コレクションフレームワークは、インターフェイスの数を定義します。 このセクションでは、各インターフェイスの概要を示しています。
いいえ。 | インターフェース記述 |
---|---|
1 | Collectionインタフェースは、あなたがオブジェクトのグループを使用することを可能にするルートインタフェースCollection階層です。 |
2 | コレクションとリストインスタンスから継承されたListインタフェース要素は、順序付けられたコレクションを格納します。 |
3 | セット コレクションから継承され、それが重複要素のないコレクションです 。 |
4 | たSortedSet セットを保存するための整然とした連続して設定します。 |
5 | 地図 値にのみマップキー。 |
6 | Map.Entry 地図でdescription要素(キー/値のペア)。 地図は内部クラスです。 |
7 | SortedMap 地図から継承されますので、キーは昇順で開催されました。 |
8 | 列挙 これはコレクション要素の伝統的なあなたが列挙ことが可能なインタフェースおよびメソッドの定義(一度取得した)オブジェクトです。 この伝統は、インタフェースイテレータで置き換えられています。 |
コレクション
Javaは標準クラスのセットは、Collectionインタフェースを実装しています。 それらのいくつかは他の人が抽象クラスであるが、インタフェースの部分的な実装を提供し、それを使用することができ、特定のクラスです。
標準的なコレクションクラスを次の表にまとめます。
いいえ。 | クラス説明 |
---|---|
1 | AbstractCollectionの コレクションインタフェースのほとんどを達成します。 |
2 | AbstractList AbstractCollectionの中の継承とListインタフェースのほとんどを達成しました。 |
3 | AbstractSequentialList AbstractListから継承されます、それはチェーンではなく、ランダムアクセスでデータ要素へのアクセスを提供します。 |
4 | LinkedListの AbstractSequentialListから継承され、それがリンクリストを実装しています。 |
5 | ArrayListの 継承AbstractList、動的配列を介して。 |
6 | AbstractSet AbstractCollectionの中の継承とSetインタフェースのほとんどを達成しました。 |
7 | HashSetの 彼は、AbstractSetを継承して、ハッシュテーブルを使用します。 |
8 | LinkedHashSetの 予測可能な繰り返し順序とリンクリスト、ハッシュテーブルSetインタフェースを持ちます。 |
9 | TreeSetの ために、要素の自然順序の要素を使用して、AbstractSetから継承されます。 |
10 | クラスAbstractMap Mapインタフェースのほとんどを達成するために。 |
11 | HashMapの HashMapのは、キーと値のペアの内容を格納するハッシュテーブル(キーと値)のマッピングです。 HashMapのは、クラスAbstractMapを継承地図、Cloneableを、java.io.Serializableインタフェースを実現しました。 |
12 | TreeMapの 彼はクラスAbstractMapを継承し、ツリーの使用。 |
13 | WeakHashMap 継承クラスAbstractMapクラスは、ハッシュテーブル弱キーを使用します。 |
14 | LinkedHashMap ソートする要素の自然順序の要素を使用して、HashMapのから継承されます。 |
15 | IdentityHashMap 文書を比較するときにリファレンスの同一性を使用してクラスAbstractMapクラスの継承、。 |
次のように前のチュートリアルでは、パッケージで定義されているjava.utilのクラスで議論されてきました:
いいえ。 | クラス説明 |
---|---|
1 | ベクトル Vectorクラスは、動的配列を実装します。 ArrayListのと似ていますが、2とは異なっています。 |
2 | スタック スタックは、標準的なLIFOスタックを実装するベクターのサブクラスです。 |
3 | 辞書 Dictionaryクラスは、クラスアクションと地図に類似のキー/値のペアを格納するために使用される抽象クラスです。 |
4 | ハッシュテーブル ハッシュテーブルは、元java.utilでの一部は辞書具体的な実装です。 |
5 | プロパティ プロパティは、ハッシュテーブルを継承しています。不変のプロパティセットを表します。プロパティリストの各キー、およびそれに対応する値は文字列です。 |
6 | BitSet ビットセットクラスは、ビット値を保持するために、アレイの特殊なタイプを作成します。 配列のサイズとのBitSetを増やす必要があります。 |
ビットセットクラスは、ビット値を保持するために、アレイの特殊なタイプを作成します。 配列のサイズとのBitSetを増やす必要があります。
コレクションアルゴリズム
コレクション・フレームワークは、いくつかのアルゴリズムがコレクションとマッピングのために使用することができます定義されています。 これらのアルゴリズムは、コレクションとして定義されているクラスの静的メソッドです。
互換性のない型を比較しようとすると、いくつかの方法がClassCastExceptionをスローすることができます。 非変更セット、UnsupportedOperationException例外が変更しようとします。
EMPTY_SET EMPTY_LIST、のEMPTY_MAP:コレクションは、3つの静的変数を定義します。 これらの変数は不変です。
いいえ。 | アルゴリズムの説明 |
---|---|
1 | コレクションアルゴリズム ここではすべてのアルゴリズムのリストです。 |
イテレータを使用する方法
通常は、要素のコレクションを横断することになるでしょう。 例えば、コレクションの各要素が表示されます。
それを行う最も簡単な方法は、それはIteratorインターフェイスまたは反復子のインタフェースを実装するオブジェクトで、イテレータを使用することです。
イテレータ、あなたが循環することによって取得または設定するための要素を削除できるようにします。 反復子は、双方向リストを横断し、要素を変更できるように、Iteratorを継承しました。
コンパレータを使用する方法
TreeSetのとTreeMapのは、ソート記憶素子に応じて注文します。しかし、これは正確にどのような順序で定義するようにデバイスを比較することです。
このインタフェースは、セットをソートするさまざまな方法で私たちを可能にします。
いいえ。 | 記載された方法の比較 |
---|---|
1 | Javaのコンパレータを使用してください コンパレータインタフェースは、一例としてここに記載されているすべてのメソッドを提供します |
サマリー
Javaのコレクション・フレームワークそれらを操作するためにパッケージ化されたデータ構造とアルゴリズムでプログラマーを提供します。
コレクションは、他のオブジェクトへの参照を保持できるオブジェクトです。 コレクションの各タイプのコレクション操作インタフェースの宣言を行うことができます。
コレクション・フレームワークのクラスとインタフェースは、java.utilパッケージにあります。