トップに戻る

コレクションクラス List の操作

大きさを決めずに、要素を追加・削除できるリスト

コレクションクラスとは List / Map / Queue / Set

値の集合を効率よく管理するためのクラスです。代表的な種類があります。

List順番付きの並び
Mapキーと値の対
Queue待ち行列
Set重複なしの集合

配列は生成時に大きさが決まり、後から x[3] が必要になっても対応できません。
List は生成時に大きさを決めなくてよく、必要に応じて要素を追加・削除できます。

// 配列:大きさが固定される
int[] x = new int[3]; // x[3] は使えない

// List:大きさは自由に変えられる
import java.util.*;
ArrayList<String> list = new ArrayList<String>();
List を操作してみる add / set / remove

list.size()0

list を生成しました(要素はまだ 0 個)
追加 add 位置
上書き set
削除 remove
List の操作まとめ 書式と意味
1

生成 new ArrayList<型>()

ArrayList<String> list = new ArrayList<String>(); で、String 型の要素を持つ List を作ります。型には Integer, Double, Boolean, String などが使えます。

2

参照 list.get(番号)

要素の番号は配列の添字と同じく 0 から始まります。list.get(0) が先頭の要素です。

3

追加 list.add(値) / list.add(番号, 値)

引数が値だけなら末尾に追加。番号も指定するとその位置に割り込み、後ろの要素は 1 つずつ後ろへずれます。

4

上書き list.set(番号, 値)

指定した位置の要素を書き換えます。要素数は変わりません(add とは違い割り込みません)。

5

削除 list.remove(番号) / 大きさ list.size()

指定位置の要素を削除すると後ろの要素が前へ詰まります。list.size() は現在の要素数を返します。

List を扱うプログラム例 add / set / remove / for
import java.util.*; // 準備

ArrayList<String> list = new ArrayList<String>();
list.add("Alice");     // 末尾に追加
list.add("Bob");       // 末尾に追加
list.add(1, "Chris");  // 1番目に割り込み
list.set(0, "Mike");   // 先頭を上書き
list.remove(1);        // 1番目を削除

for (int i = 0; i < list.size(); i++) {
  println(list.get(i)); // i番目を表示
}

上のコードを順に実行したときの最終的な list と出力です。


        
Iterator で順番にアクセス iterator / next / hasNext

Iterator は「操作対象の要素を指す矢印」です。next() で次の要素へ進み、その値を返します。hasNext() は次の要素があるか(true / false)を返します。

it = list.iterator(); 先頭の手前を指しています
import java.util.*;

Iterator<String> it = list.iterator();
while (it.hasNext()) {   // 次の要素がある間くり返す
  println(it.next());   // 表示して次へ進める
}
// for と size()・get() でも同じ動作
for (int i = 0; i < list.size(); i++) {
  println(list.get(i));
}
iterator() List から Iterator を取り出します。最初は先頭の要素の手前を指しています。
next() 矢印を次の要素へ進め、その要素の値を返します。Alice → Bob → Chris の順です。
hasNext() 次に取り出す要素が残っていれば true、最後まで進んでいれば false を返します。

Javaの学習用の教材ページです。