Looking for java Answers? Try Ask4KnowledgeBase
Looking for java Keywords? Try Ask4Keywords

Java Languageコレクション


前書き

java.utilのコレクションフレームワークは、通常の配列では提供できない機能を持つ一連のデータの汎用クラスを提供します。

Collectionsフレームワークには、 Collection<O>メインサブインタフェースList<O>Set<O> 、およびマッピングコレクションMap<K,V>インタフェースが含まれています。コレクションはルートインターフェースであり、他の多くのコレクションフレームワークによって実装されています。

備考

コレクションは、その内部に他のオブジェクトのコレクションを格納できるオブジェクトです。 ジェネリックスを使用して、コレクションに格納されているデータの種類を指定できます。

コレクションは、通常、 java.utilまたはjava.util.concurrent名前空間を使用します。

Java SE 1.4

Java 1.4.2以下はジェネリックをサポートしていません。そのため、コレクションに含まれる型パラメーターを指定することはできません。型の安全性を持たないことに加えて、キャストを使用してコレクションから正しい型を戻す必要があります。

Collection<E>加えて、複数の主要なコレクションがあり、そのうちのいくつかにはサブタイプがあります。

  • List<E>は、オブジェクトの順序付けられたコレクションです。これは配列に似ていますが、サイズの制限を定義していません。実装は、通常、新しい要素に対応するために内部的にサイズが大きくなります。
  • Set<E>は重複を許可しないオブジェクトの集合です。
    • SortedSet<E>は要素の順序付けも指定するSet<E>です。
  • Map<K,V>はキーと値のペアの集合です。
    • SortedMap<K,V>は、要素の順序付けも指定するMap<K,V>です。
Java SE 5

Java 5では、新しいコレクション型が追加されました。

  • Queue<E>は、特定の順序で処理される要素の集合です。この実装は、これがFIFOかLIFOかを指定します。これは、 Stackクラスを廃止します。
Java SE 6

Java 6では、いくつかの新しいコレクションのサブタイプが追加されています。

  • NavigableSet<E>は、特別なナビゲーションメソッドが組み込まれたSet<E>です。
  • NavigableMap<K,V>は、特別なナビゲーションメソッドを組み込んだMap<K,V>です。
  • Deque<E>はどちらの端からでも読み取れるQueue<E>です。

上記の項目はすべてインターフェイスです。それらを使用するには、 ArrayListHashSetHashMapPriorityQueueなどの適切な実装クラスを見つける必要があります。

各タイプのコレクションには、パフォーマンスメトリックとユースケースが異なる複数の実装があります。

Liskov Substitution Principleがコレクションのサブタイプに適用されることに注意してください。それは、されSortedSet<E>期待して関数に渡すことができますSet<E> 。クラスの継承でコレクションを使用する方法の詳細については、GenericsセクションのBounded Parametersを参照すると便利です。

独自のコレクションを作成する場合は、インタフェースを実装する代わりに抽象クラス( AbstractListなど)のいずれかを継承する方が簡単です。

Java SE 1.2

1.2より前のバージョンでは、代わりに次のクラス/インタフェースを使用する必要がありました。

  • ArrayList代わりにVector
  • Map代わりにDictionary 。 Dictionaryはインタフェースではなく抽象クラスでもあることに注意してください。
  • HashMap代わりにHashtable

これらのクラスは廃止されており、最新のコードでは使用しないでください。

コレクション 関連する例