工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Javaコレクションフレームワーク完全ガイド: インターフェース・実装クラス・アルゴリズム・イテレータ・Comparator

Java 2以前、JavaはDictionary、Vector、Stack、Propertiesなどのアドホックなクラスを提供してオブジェクトグループを格納・操作していました。これらのクラスは非常に有用でしたが、中央の統一的なテーマが欠けていました。したがってVectorの使用方法はPropertiesの使用方法とは異なっていました。

コレクションフレームワークは以下のような目標を達成するために設計されました。

この目的のため、コレクションフレームワーク全体は一連の標準インターフェースを中心に設計されています。これらのインターフェースのいくつかの標準実装(LinkedList、HashSet、TreeSetなど)が提供されており、そのまま使用したり、独自のコレクションを実装したりできます。

コレクションフレームワークとは、コレクションを表現・操作するための統一アーキテクチャです。すべてのコレクションフレームワークには以下が含まれます。

コレクションに加えて、フレームワークはいくつかのマップインターフェースとクラスを定義します。マップはキー/値ペアを格納します。マップは厳密な意味ではコレクションではありませんが、コレクションと完全に統合されています。

コレクションインターフェース

コレクションフレームワークはいくつかのインターフェースを定義します。このセクションでは各インターフェースの概要を提供します。

No.インターフェースと説明
1Collectionインターフェース - オブジェクトグループを操作可能にする。コレクション階層のトップ。
2Listインターフェース - Collectionを拡張し、順序付きコレクションを格納するListのインスタンス。
3Setインターフェース - Collectionを拡張し、一意の要素を含むセットを扱う。
4SortedSetインターフェース - Setを拡張し、ソートされたセットを扱う。
5Mapインターフェース - 一意のキーを値にマッピングする。
6Map.Entryインターフェース - マップ内の要素(キー/値ペア)を記述する。Mapの内部クラス。
7SortedMapインターフェース - Mapを拡張し、キーを昇順で維持する。
8Enumerationインターフェース - コレクションオブジェクトの要素を列挙(1つずつ取得)するメソッドを定義するレガシーインターフェース。Iteratorに置き換わった。

コレクションクラス

Javaはコレクションインターフェースを実装する標準コレクションクラスのセットを提供します。一部のクラスはそのまま使用できる完全な実装を提供し、他は抽象クラスで、具象コレクションを作成するための骨格実装を提供します。

標準コレクションクラスを以下の表にまとめます。

No.クラスと説明
1AbstractCollection - Collectionインターフェースの大部分を実装
2AbstractList - AbstractCollectionを拡張し、Listインターフェースの大部分を実装
3AbstractSequentialList - 要素へのランダムアクセスではなくシーケンシャルアクセスを使用するコレクション向けにAbstractListを拡張
4LinkedList - AbstractSequentialListを拡張して連結リストを実装
5ArrayList - AbstractListを拡張して動的配列を実装
6AbstractSet - AbstractCollectionを拡張し、Setインターフェースの大部分を実装
7HashSet - ハッシュテーブルで使用するためAbstractSetを拡張
8LinkedHashSet - 挿入順イテレーションを可能にするためHashSetを拡張
9TreeSet - ツリーに格納されるセットを実装。AbstractSetを拡張
10AbstractMap - Mapインターフェースの大部分を実装
11HashMap - ハッシュテーブルを使用するためAbstractMapを拡張
12TreeMap - ツリーを使用するためAbstractMapを拡張
13WeakHashMap - 弱いキーを持つハッシュテーブルを使用するためAbstractMapを拡張
14LinkedHashMap - 挿入順イテレーションを可能にするためHashMapを拡張
15IdentityHashMap - AbstractMapを拡張し、ドキュメント比較時に参照等価性を使用

AbstractCollection、AbstractSet、AbstractList、AbstractSequentialList、AbstractMapクラスは、コアコレクションインターフェースの骨格実装を提供し、それらの実装に必要な労力を最小限に抑えます。

前章で説明したjava.utilで定義される以下のレガシークラス:

No.クラスと説明
1Vector - 動的配列を実装。ArrayListに似ているがいくつか違いがある。
2Stack - Vectorのサブクラスで標準的な後入れ先出しスタックを実装
3Dictionary - キー/値ストレージリポジトリを表す抽象クラス。Mapと非常に似て動作
4Hashtable - 元々java.utilの一部で、Dictionaryの具体的実装
5Properties - Hashtableのサブクラス。キーと値が両方Stringの値リストを維持
6BitSet - ビット値を保持する特殊なタイプの配列を作成。必要に応じてサイズを増やせる

コレクションアルゴリズム

コレクションフレームワークは、コレクションとマップに適用できるいくつかのアルゴリズムを定義します。これらのアルゴリズムはCollectionsクラス内の静的メソッドとして定義されます。

いくつかのメソッドはClassCastExceptionをスローする可能性があります。これは互換性のない型を比較しようとしたときに発生します。またUnsupportedOperationExceptionをスローする可能性があります。これは変更不可コレクションを変更しようとしたときに発生します。

Collectionsは3つの静的変数を定義します:EMPTY_SET、EMPTY_LIST、EMPTY_MAP。すべて不変です。

No.アルゴリズムと説明
1コレクションアルゴリズム - すべてのアルゴリズム実装のリスト

イテレータの使い方

コレクション内の要素を順に処理したいことがよくあります。例えば各要素を表示したい場合などです。

これを行う最も簡単な方法は、IteratorまたはListIteratorインターフェースを実装するオブジェクトであるイテレータを使用することです。

Iteratorを使用すると、コレクションを巡回し、要素を取得または削除できます。ListIteratorはIteratorを拡張し、リストの双方向走査と要素の変更を可能にします。

No.イテレータメソッドと説明
1Java Iteratorの使用 - IteratorとListIteratorインターフェースが提供するすべてのメソッドと例のリスト

Comparatorの使い方

TreeSetとTreeMapは要素をソート順で格納します。しかし、ソート順の正確な意味を定義するのはコンパレータです。

このインターフェースを使用すると、所与のコレクションを任意の数の異なる方法でソートできます。また、このインターフェースは(修正できないクラスを含む)任意のクラスのインスタンスをソートするためにも使用できます。

No.コンパレータメソッドと説明
1Java Comparatorの使用 - Comparatorインターフェースが提供するすべてのメソッドと例のリスト

まとめ

Javaコレクションフレームワークは、プログラマにパッケージ化されたデータ構造とそれらを操作するアルゴリズムへのアクセスを提供します。

コレクションは他のオブジェクトへの参照を保持できるオブジェクトです。コレクションインターフェースは、各タイプのコレクションで実行可能な操作を宣言します。

コレクションフレームワークのクラスとインターフェースはjava.utilパッケージにあります。

Java

  1. C#コレクション実践チュートリアル:実例で学ぶ柔軟なデータ管理
  2. Java演算子をマスター:種類、構文、実践例
  3. Javaコメント:種類、使い方、ベストプラクティス
  4. Java拡張forループをマスター:構文、例、ベストプラクティス
  5. Java文字列をマスター:生成、メソッド、ベストプラクティス
  6. Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
  7. Java無名インナークラス完全ガイド:定義、構文、実践例
  8. Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
  9. Javaアノテーション完全ガイド:種類、配置場所、実践例
  10. Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
  11. Javaコレクションフレームワーク完全ガイド: インターフェース・実装クラス・アルゴリズム・イテレータ・Comparator