Java Tut 39: Java Iterator (trình lặp)
Trình lặp lại Java
An Iterator
là một đối tượng có thể được sử dụng để lặp qua các bộ sưu tập, như ArrayList và HashSet . Nó được gọi là “trình lặp” vì “lặp” là thuật ngữ kỹ thuật để chỉ vòng lặp.
Để sử dụng một Iterator, bạn phải nhập nó từ java.util
gói.
Bắt một Trình lặp lại
Các iterator()
phương pháp có thể được sử dụng để có được một Iterator
cho bất kỳ bộ sưu tập:
Thí dụ
// 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());
}
}
Vòng qua một bộ sưu tập
Để lặp qua một bộ sưu tập, hãy sử dụng các phương thức hasNext()
và next()
của Iterator
:
Thí dụ
while(it.hasNext()) {
System.out.println(it.next());
}
Xóa các mục khỏi bộ sưu tập
Các trình lặp được thiết kế để dễ dàng thay đổi các tập hợp mà chúng lặp qua. Các remove()
phương pháp có thể xoá các mục từ một bộ sưu tập trong khi vòng lặp.
Thí dụ
Sử dụng một trình lặp để xóa các số nhỏ hơn 10 khỏi một tập hợp:
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);
}
}
Lưu ý: Việc cố gắng xóa các mục bằng vòng lặp for hoặc vòng lặp for-each sẽ không hoạt động chính xác vì bộ sưu tập đang thay đổi kích thước cùng lúc mã đang cố gắng lặp lại.