### コレクション（リスト、セット）とマップ

[戻る] [前に] [次に]

#### ■ コレクション（リスト、セット）とマップ

コレクション（リスト、セット）や マップ は、オブジェクトの集合を扱うための仕組みです。

カテゴリ | クラス | 説明
--- | --- | ---
List系 | ArrayList | 配列を扱います。
LinkedList | 配列を扱います。挿入・削除が高速です。
Vector | 配列を扱います。パフォーマンスが悪いため現在ではあまり推奨されない古いクラスです。
Set系 | HashSet | 値の重複を許さない順不同の要素集合を扱います。
TreeSet | 値の重複を許さないソートされたの要素集合を扱います。
Map系 | HashMap | キーと値の組からなる要素の集合を扱います。
TreeMap | キーと値の組からなる要素の集合を扱います。キーでソートされています。

#### ■ リスト（ArrayList）

ArrayList は配列を扱う一般的なクラスです。

§ArrayListTest.java

    import java.util.*;

    class ArrayListTest {
        public static void main(String[] args) {
            ArrayList list = new ArrayList();
            list.add("AAA");
            list.add("BBB");
            list.add("CCC");
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
        }
    }

下記などのメソッドが用意されています。

- list.add(o) - オブジェクト o を配列の末尾に追加する
- list.add(n, o) - オブジェクトを n で指定した場所に追加する
- list.get(n) - n番目の要素を得る
- list.remove(n) - n番目の要素を削除する
- list.set(n, o) - n番目の要素をオブジェクト o で置き換える
- list.size() - 要素の個数を得る
- list.isEmpty() - 空かどうか調べる
- list.indexOf(o) - オブジェクト o と等しい要素のインデックスを探す
- list.contains(o) - オブジェクト o と等しい要素があるか調べる
- list.addAll(list2) - 配列の末尾に配列 list2 を追加する

#### ■ リスト（LinkedList）

LinkedList も ArrayList と同じように使用することができます。挿入や削除を頻繁に行う場合は ArrayList よりも LinkedList の方が高速です。ただし、get() による参照は ArrayList の方が高速です。

§LinkedListTest.java

    import java.util.*;

    class LinkedListTest {
        public static void main(String[] args) {
            LinkedList list = new LinkedList();
            list.add("AAA");
            list.add("BBB");
            list.add("CCC");
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
        }
    }

#### ■ リスト（Vector）

Vector クラスも ArrayList や LinkedList と同じように扱うことができますが、パフォーマンスが悪いため、現在ではあまり推奨されていません。

#### ■ セット（HashSet）

HashSet も配列を扱いますが、要素の重複が許されない、順序の保障が無い点が ArrayList や LinkedList と異なります。要素を参照する際には Iterator を用います。

§HashSetTest.java

    import java.util.*;

    class HashSetTest {
        public static void main(String[] args) {
            HashSet set = new HashSet();
            set.add("AAA");
            set.add("BBB");
            set.add("CCC");
            set.add("AAA");
            Iterator it = set.iterator();
            while (it.hasNext()) {
                System.out.println(it.next());
            }
        }
    }

実行結果は下記のようになります。AAA を 2回 add() していますが、重複要素がひとつにマージされます。結果の順序は add() した順序に関係なくバラバラになります。

    C:\java>java HashSetTest
    CCC
    AAA
    BBB

下記などのメソッドが用意されています。

- set.add(o) - オブジェクト o を配列の末尾に追加する
- set.clear() - 配列をクリアする
- set.contains(o) - オブジェクト o と等しい要素があるか調べる
- set.isEmpty() - 空かどうか調べる
- set.remove(o) - オブジェクト o にマッチする要素を削除する
- set.size() - 要素の個数を得る

#### ■ セット（TreeSet）

TreeSet も HashSet と同じように使用できます。要素が自動的にソートされる点が HashSet と異なります。

§HashSetTest.java

    import java.util.*;

    class TreeSetTest {
        public static void main(String[] args) {
            TreeSet set = new TreeSet();
            set.add("CCC");
            set.add("AAA");
            set.add("BBB");
            set.add("AAA");
            Iterator it = set.iterator();
            while (it.hasNext()) {
                System.out.println(it.next());
            }
        }
    }

    C:\java>java TreeSetTest
    AAA
    BBB
    CCC

#### ■ マップ（HashMap）

HashMap は、名前（キー）と値の組み合わせを要素として持つ配列です。

§HashMapTest.java

    import java.util.*;

    class HashMapTest {
        public static void main(String[] args) {
            HashMap map = new HashMap();
            map.put("Name", "Tanaka");
            map.put("Age", new Integer(26));
            System.out.println("Name = " + map.get("Name"));
            System.out.println("Age = " + map.get("Age"));
        }
    }

    C:\java>java HashMapTest
    Name = Tanaka
    Age = 26

すべての要素を参照するには下記のようにします。

            Iterator it = map.keySet().iterator();
            while (it.hasNext()) {
                Object o = it.next();
                System.out.println(o + " = " + map.get(o));
            }

#### ■ マップ（TreeMap）

TreeMap も HashMap と同じように使用できます。要素がキーによって自動的にソートされる点が HashMap と異なります。

§TreeMapTest.java

    import java.util.*;

    class TreeMapTest {
        public static void main(String[] args) {
            TreeMap map = new TreeMap();
            map.put("Name", "Tanaka");
            map.put("Age", new Integer(26));
            Iterator it = map.keySet().iterator();
            while (it.hasNext()) {
                Object o = it.next();
                System.out.println(o + " = " + map.get(o));
            }
        }
    }

http://www.tohoho-web.com/java/collection.htm
初版：2004年11月28日、最終更新：2004年11月28日
[戻る] [前に] [次に]