Java イテレータ
Java イテレータ
Iterator
は、ArrayListやHashSetなどのコレクションをループするために使用できるオブジェクトです。「反復」はループの専門用語であるため、「イテレータ」と呼ばれます。
イテレータを使用するには、java.util
パッケージからイテレータをインポートする必要があります。
イテレータを取得する
iterator()
メソッドを使用すると、任意のコレクションの Iterator を取得できます。
例
// Import the ArrayList class and the Iterator class
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
// Make a collection
ArrayList<String> cars = new ArrayList<String>();
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("Mazda");
// Get the iterator
Iterator<String> it = cars.iterator();
// Print the first item
System.out.println(it.next());
}
}
コレクションのループ
コレクションをループするには、Iterator
のhasNext()
メソッドとnext()
メソッドを使用します。
コレクションからアイテムを削除する
イテレータは、ループするコレクションを簡単に変更できるように設計されています。remove()
メソッドは、ループ中にコレクションからアイテムを削除できます。
例
イテレータを使用して、コレクションから 10 未満の数値を削除します。
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(12);
numbers.add(8);
numbers.add(2);
numbers.add(23);
Iterator<Integer> it = numbers.iterator();
while(it.hasNext()) {
Integer i = it.next();
if(i < 10) {
it.remove();
}
}
System.out.println(numbers);
}
}
注:forループまたはfor-eachループを使用して項目を削除しようとすると、コードがループしようとしていると同時にコレクションのサイズが変更されるため、正しく機能しません。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。