コレクション(リスト、セット)や マップ は、オブジェクトの集合を扱うための仕組みです。
| カテゴリ | クラス | 説明 |
|---|---|---|
| List系 | ArrayList | 配列を扱います。 |
| LinkedList | 配列を扱います。挿入・削除が高速です。 | |
| Vector | 配列を扱います。パフォーマンスが悪いため現在ではあまり推奨されない古いクラスです。 | |
| Set系 | HashSet | 値の重複を許さない順不同の要素集合を扱います。 |
| TreeSet | 値の重複を許さないソートされたの要素集合を扱います。 | |
| Map系 | HashMap | キーと値の組からなる要素の集合を扱います。 |
| TreeMap | キーと値の組からなる要素の集合を扱います。キーでソートされています。 |
ArrayList は配列を扱う一般的なクラスです。
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 も ArrayList と同じように使用することができます。挿入や削除を頻繁に行う場合は ArrayList よりも LinkedList の方が高速です。ただし、get() による参照は ArrayList の方が高速です。
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 クラスも ArrayList や LinkedList と同じように扱うことができますが、パフォーマンスが悪いため、現在ではあまり推奨されていません。
HashSet も配列を扱いますが、要素の重複が許されない、順序の保障が無い点が ArrayList や LinkedList と異なります。要素を参照する際には Iterator を用います。
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 も HashSet と同じように使用できます。要素が自動的にソートされる点が HashSet と異なります。
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 は、名前(キー)と値の組み合わせを要素として持つ配列です。
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 も HashMap と同じように使用できます。要素がキーによって自動的にソートされる点が HashMap と異なります。
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));
}
}
}