コレクション(リスト、セット)とマップ

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

コレクション(リスト、セット)とマップ

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

カテゴリクラス説明
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));
        }
    }
}

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

リスト(LinkedList)

LinkedListArrayList と同じように使用することができます。挿入や削除を頻繁に行う場合は 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 クラスも ArrayListLinkedList と同じように扱うことができますが、パフォーマンスが悪いため、現在ではあまり推奨されていません。

セット(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

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

セット(TreeSet)

TreeSetHashSet と同じように使用できます。要素が自動的にソートされる点が 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

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

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

マップ(TreeMap)

TreeMapHashMap と同じように使用できます。要素がキーによって自動的にソートされる点が 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日
[戻る] [前に] [次に]