List構造 コレクションクラス
List構造は、要素を順番付けして管理するデータ構造です。
「ArrayList」「LinkedList」の2種類があります。
要素がインデックス(番号)順に並んでいるので、番号を指定して要素の取得、挿入、更新、削除ができます。また、Iteratorや拡張for構文を使って先頭から順番に要素を取得することも出来ます。
ArrayListは要素の取得が早いが挿入や削除が遅い、LinkedListは要素の挿入や削除は早いが取得が遅いという特徴があります。
List構造は、要素の重複は可能です。
リスト(ArrayList)
ArrayList は配列を扱う一般的なクラスです。
下記などのメソッドが用意されています。
- 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 を追加する
ArrayList
の使用例
ArrayListUsage.pde
。ArrayList
の使用例
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
String n[] = {"Tim Bray",
"Brian Kernighan",
"Jon Bentley",
"Karl Fogel"};
ArrayList<String> names = new ArrayList(Arrays.asList(n));
//配列と同様の方法,添字で要素にアクセスします。
println("* Access with FOR *");
for(int i = 0; i<names.size(); ++i){
println(names.get(i));
}
names.add(1,"Eliotte Rusty Harold"); // 2番目位置に要素を挿入します。
names.remove(2); // 3番目の要素を削除します。
//コレクションクラスならではの方法で要素にアクセスします。
println("* Access with ITERATOR *");
Iterator<String> it = names.iterator();
while(it.hasNext()){
println(it.next());
}
リスト(LinkedList)
LinkedList も ArrayList と同じように使用することができます。挿入や削除を頻繁に行う場合は ArrayList よりも LinkedList の方が高速です。ただし、get() による参照は ArrayList の方が高速です。
リスト(Vector)
Vector クラスも ArrayList や LinkedList と同じように扱うことができますが、パフォーマンスが悪いため、現在ではあまり推奨されていません。