広告

Java : ListIterator - API使用例

ListIterator (Java SE 21 & JDK 21) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。


概要

リスト用のイテレータ。プログラマがいずれかの方向にリストをトラバースしたり、イテレーション時にリストを変更したり、イテレータのリスト内での現在の位置を取得したりできます。

クラス構成

final var list = List.of("aaa", "bbb", "ccc");
System.out.println(list); // [aaa, bbb, ccc]

final var iterator = list.listIterator();

System.out.println("-- next --");
while (iterator.hasNext()) {
    final var value = iterator.next();
    System.out.println(value);
}

// 結果
// ↓
//-- next --
//aaa
//bbb
//ccc

System.out.println("-- previous --");
while (iterator.hasPrevious()) {
    final var value = iterator.previous();
    System.out.println(value);
}

// 結果
// ↓
//-- previous --
//ccc
//bbb
//aaa

メソッド

void add (E e)

指定された要素をリストに挿入します(オプションの操作)。

final var list = new ArrayList<String>();
Collections.addAll(list, "aaa", "bbb", "ccc");

System.out.println(list); // [aaa, bbb, ccc]

final var iterator = list.listIterator();
while (iterator.hasNext()) {
    final var value = iterator.next();
    iterator.add(value.toUpperCase());
}

System.out.println(list); // [aaa, AAA, bbb, BBB, ccc, CCC]

boolean hasNext ()

リストを順方向にトラバースしたときに、このリスト・イテレータがさらに要素を持っている場合にtrueを返します。

final var list = List.of("aaa", "bbb", "ccc");
System.out.println(list); // [aaa, bbb, ccc]

final var iterator = list.listIterator();

System.out.println("-- next --");
while (iterator.hasNext()) {
    final var index = iterator.nextIndex();
    final var value = iterator.next();
    System.out.printf("index = %d, value = %s%n", index, value);
}

// 結果
// ↓
//-- next --
//index = 0, value = aaa
//index = 1, value = bbb
//index = 2, value = ccc

boolean hasPrevious ()

リストを逆方向にトラバースしたときに、このリスト・イテレータがさらに要素を持っている場合にtrueを返します。

final var list = List.of("aaa", "bbb", "ccc");
System.out.println(list); // [aaa, bbb, ccc]

final var iterator = list.listIterator(list.size());

System.out.println("-- previous --");
while (iterator.hasPrevious()) {
    final var index = iterator.previousIndex();
    final var value = iterator.previous();
    System.out.printf("index = %d, value = %s%n", index, value);
}

// 結果
// ↓
//-- previous --
//index = 2, value = ccc
//index = 1, value = bbb
//index = 0, value = aaa

E next ()

リスト内の次の要素を返し、カーソル位置を前に進めます。

このメソッドの使用例は、hasNext() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

int nextIndex ()

次にnext()を呼び出したときに返されることになる要素のインデックスを返します。

このメソッドの使用例は、hasNext() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

E previous ()

リスト内の前の要素を返し、カーソル位置を逆方向に移動します。

このメソッドの使用例は、hasPrevious() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

int previousIndex ()

次にprevious()を呼び出したときに返されることになる要素のインデックスを返します。

このメソッドの使用例は、hasPrevious() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

void remove ()

next()またはprevious()によって返された最後の要素をリストから削除します(オプションの操作)。

final var list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6);

System.out.println(list); // [1, 2, 3, 4, 5, 6]

final var iterator = list.listIterator();
while (iterator.hasNext()) {
    final var value = iterator.next();
    if (value % 2 == 0) {
        iterator.remove();
    }
}

System.out.println(list); // [1, 3, 5]

void set (E e)

next()またはprevious()から最後に返された要素を指定された要素で置き換えます(オプションの操作)。

final var list = new ArrayList<String>();
Collections.addAll(list, "aaa", "bbb", "ccc");

System.out.println(list); // [aaa, bbb, ccc]

final var iterator = list.listIterator();
while (iterator.hasNext()) {
    final var value = iterator.next();
    iterator.set(value.toUpperCase());
}

System.out.println(list); // [AAA, BBB, CCC]

Iteratorで宣言されたメソッド

forEachRemaining

Java API 使用例 : Iterator」をご参照ください。


関連記事

ページの先頭へ