Java ListIteratorインターフェース完全ガイド:双方向走査と要素操作
Java ListIteratorインターフェース
JavaのListIteratorインターフェースを実例と明確な説明で包括的に解説します。
ListIteratorインターフェースはIteratorを拡張し、双方向走査を可能にします。Listを前後両方向に移動しながら、その場で要素の変更が可能です。
ナビゲート、削除、置換ができるため、リストを扱うJava開発者にとって必須のツールです。
ListIteratorのコアメソッド
hasNext()– 次の要素が存在すればtrueを返すnext()– 次の要素に移動して返すnextIndex()–next()が返す要素のインデックスを提供previous()– 1つ前の要素に移動して返すpreviousIndex()–previous()が返す要素のインデックスを提供remove()–next()またはprevious()で最後に返された要素を削除set(E e)– 最後に返された要素を指定値で置換
例1:前方向ナビゲーション
ArrayListでnext()、nextIndex()、hasNext()を実演:
import java.util.ArrayList;
import java.util.ListIterator;
class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
ListIterator<Integer> iterator = numbers.listIterator();
int first = iterator.next();
System.out.println("次の要素: " + first);
int nextIndex = iterator.nextIndex();
System.out.println("次の要素の位置: " + nextIndex);
System.out.println("次の要素はありますか? " + iterator.hasNext());
}
}
出力
ArrayList: [1, 3, 2] 次の要素: 1 次の要素の位置: 1 次の要素はありますか? true
例2:後方向ナビゲーション
イテレータを2回進めた後でprevious()とpreviousIndex()を実演:
import java.util.ArrayList;
import java.util.ListIterator;
class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
ListIterator<Integer> iterator = numbers.listIterator();
iterator.next();
iterator.next();
int prev = iterator.previous();
System.out.println("前の要素: " + prev);
int prevIndex = iterator.previousIndex();
System.out.println("前の要素の位置: " + prevIndex);
}
}
出力
ArrayList: [1, 3, 2] 前の要素: 3 前の要素の位置: 0
最初は最初の要素の前に位置しているため、previous()呼び出しは例外をスローします。2回のnext()呼び出し後、イテレータは3と2の間に位置するため、previous()は3を返します。
Java
- C#インターフェイスをマスターする:定義、実装、実践的なユースケース
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Java NavigableSetインターフェースをマスター:ナビゲーション、ソート、実践例
- Javaラムダ式完全ガイド:基礎からStream APIまで
- Java インターフェース vs 抽象クラス:適切な抽象化の選び方
- Javaインターフェース完全ガイド: 定義・実装・多重継承・タグインターフェース
- Java 9プライベートインターフェースメソッド:カプセル化とコード再利用を強化