コレクション (collection)

コレクションとはオブジェクトを保持してまとめる、配列を補足するものです。配列では要素のサイズは固定ですが、コレクションならば動的に変更できます。

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

  • Collection … オブジェクトのグループ
    • Set … セットの抽象化
      • SortedSet … 自動的にソートされる要素のセット
        • NavigableSet … ナビゲーションメソッドで拡張されたSortedSet
    • List … 順序づけされたコレクション
    • Queue … 処理の前に要素を保持する目的で設計されたコレクション
      • BlockingQueue … ブロック操作を追加でサポートするQueue
    • Deque … 二重終端キュー
      • BlockingDeque … ブロック操作を追加でサポートするDeque
    • Map … キーから値へのマッピング
      • SortedMap … マッピングが、キーにより自動的にソートされるマップ
        • NavigableMap … ナビゲーションメソッドで拡張されたSortedMap
      • ConcurrentMap … 追加のメソッドを提供するMap
        • ConcurrentNavigableMap … NavigableMapでもあるConcurrentMap
Collections Framework の概要

コレクション クラス (コレクション インターフェイスの実装)

すべてのコレクション クラスはjava.lang.Iterableを実装するため、拡張for文を適用できます。Iterable (Java Platform SE 7 )

また任意の型のデータを受け入れるため、ジェネリックなクラスとして定義されています。

インターフェイス
(interface)
実装 (class)
ハッシュテーブル サイズ変更可能
な配列
バランスツリー リンクリスト ハッシュテーブル
+ リンクリスト
Set HashSet --- TreeSet --- LinkedHashSet
List --- ArrayList --- LinkedList ---
Deque --- ArrayDeque --- --- ---
Map HashMap --- TreeMap --- LinkedHashMap
Collections Framework の概要

古いコレクション (legacy collection) クラス

古いコレクションには、それに対応する新しいコレクションが用意されています。よって必要がない限り、新しいコレクションを使用するようにします。

古いコレクションが必要とされるのは、複数のスレッドで処理する場合です。そのようなときには、古いコレクションで対応することを検討します。

※1 新しいコレクションでは同期されず、スレッドセーフではありません。

要素の走査

Iterable.iterator()メソッドでIteratorを取得することで、すべての要素へアクセスできます。

ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(1);
arrayList.add(2);

Iterator<Integer> iterator = arrayList.iterator();
while (iterator.hasNext()) {

    int a = iterator.next();
    System.out.print(a);
}

より簡単には、拡張for文を使用する方法もあります。

参考

参考書

Javaのドキュメントから検索