Javaに関する様々な情報をご紹介します。

1はじめてのコレクション・フレームワーク

Javaに関する様々な情報をご紹介します。

はじめてのコレクション・フレームワーク

このページではコレクション・フレームワークの概要、簡易な使用例について説明します。

コレクション・フレームワークの概要

コレクションとは複数の要素の集まりを言います。コレクション・フレームワークとはその要素の集まりを操作、管理するための方法を定義したアーキテクチャです。Javaでは、コレクション・フレームワークはインタフェースをベースに設計されています。コレクション・フレームワークのために定義されているインタフェースは以下のようになります。

コレクション・フレームワークの概要
Collectionインタフェース
Listインタフェース、Setインタフェースのスーパーインタフェースです。コレクション・フレームワークにおける共通機能が定義されています。
Listインタフェース
格納される要素において、順番を持つインタフェースです。インデックス番号により、要素を操作するメソッドが定義されています。
Setインタフェース
格納される要素において、重複を許可しないインタフェースです。重複要素を持たせたくない場合に使用します。
SortedSetインタフェース
Setインタフェースを継承します。Setインタフェースの特性に加え、要素をルールに基づきソートするという特性を持ちます。
Mapインタフェース
格納される要素において、順番を持つインタフェースです。インデックス番号により、要素を操作するメソッドが定義されています。
SortedMapインタフェース
Mapインタフェースを継承します。Mapインタフェースの特性に加えて、キーをルールに基づきソートするという特性を持ちます。

各インタフェースを実装したクラスが定義されています。各クラスを実装しているインタフェースは以下のようになります。

クラス 実装するインタフェース
ArrayList List
LinkedList List
HashSet Set
TreeSet SortedSet
LinkedHashSet Set
HashMap Map
TreeMap SortedMap
LinkedHashMap Map

※ LinkedHashSet、LinkedHashMapはJ2SDK1.4から導入されたクラスです。

※ コレクション・フレームワークはJ2SDK1.2から導入されたものです、それ以前はコレクションAPIと言う形でVectorクラス、 Hashtableクラス、Enumerationインタフェースなどが定義されていました。これらはパフォーマンス上の問題、要素操作上の問題により、コレクション・フレームワークに統合されました。下位互換性のため、これらのコレクションAPIは現在もサポートされていますが、利用は推奨されていません。

コレクション・フレームワークの使用例

コレクション・フレームワークの使用例として、同一要素の集まりに対して、異なるコレクション・フレームワーク(HasSetクラスとTreeSetクラス)をそれぞれ適用した例を紹介します。HashSetクラスはSetインタフェースを実装し、要素の重複を許可しない特性を持っています。TreeSetクラスはSortedSetインタフェースを実装し、要素の重複を許可しない特性に加え、要素をソートする特性を持っています。

例1

import java.util.*;

public class ExCollection1 {
    public static void main(String[] args) {
        Set hs1 = new HashSet();  //(1)
        Set ts1 = new TreeSet();  //(2)

        //(3)要素の追加
        for (int i = 0; i < args.length; i++) {
            hs1.add(args[i]);
        }

        //(4)要素の追加
        for (int i = 0; i < args.length; i++) {
            ts1.add(args[i]);
        }

        System.out.println(hs1);  //(5)
        System.out.println(ts1);  //(6)
    }
}

解説1

  1. (1)HashSetオブジェクトhs1を生成します。
  2. (2)TreeSetオブジェクトts1を生成します。
  3. (3)引数に指定された要素をaddメソッドを使用し、hs1オブジェクトに追加します。
  4. (4)引数に指定された要素をaddメソッドを使用し、ts1オブジェクトに追加します。
  5. (5)hs1オブジェクトを表示します。
  6. (6)ts1オブジェクトを表示します。

実行結果1

D:\JAVA>javac ExCollection1.java

D:\JAVA>java ExCollection1 J A V A C O L L E C T I O N
[O, N, L, J, I, V, E, T, C, A]  # 重複要素が排除されています。
[A, C, E, I, J, L, N, O, T, V]  # 重複要素が排除され、且つソートされています。

D:\JAVA>

1はじめてのコレクション・フレームワーク