1. Iterator interface trong Java
Iterator interface của Java collections framework cho phép chúng ta truy cập các phần tử trong các cấu trúc dữ liệu (data structure). Nó có một interface con là ListIterator.
Tất cả các lớp trong Java collections framework đều bao gồm phương thức iterator()
. Phương thức này sẽ trả về một đối tượng của một lớp kế thừa từ Iterator interface để truy cập các phần trong data structure.
Các phương thức của Iterator interface
Iterator interface cung cấp 4 phương thức để thao tác với các phần tử trong một data structure:
hasNext()
trả về true nếu vẫn còn phần tử trong data structurenext()
trả về phần tử kế tiếp trong data structureremove()
loại bỏ phần tử cuối cùng được trả về bởi hàmnext()
forEachRemaining()
thực hiện xử lý với mỗi phần tử trong data structure truy cập được
Ví dụ sử dụng Iterator interface
import java.util.ArrayList;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
//Tạo một ArrayList
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
//Tạo ra một đối tượng Iterator
Iterator<Integer> iterate = numbers.iterator();
//Sử dụng phương thức next()
int number = iterate.next();
System.out.println("Accessed Element: " + number);
//Sử dụng phương thức remove()
iterate.remove();
System.out.println("Removed Element: " + number);
System.out.print("Updated ArrayList: ");
//Sử dụng phương thức hasNext()
while(iterate.hasNext()) {
//Sử dụng phương thức forEachRemaining()
iterate.forEachRemaining((value) -> System.out.print(value + ", "));
}
}
}
Kết quả
ArrayList: [1, 3, 2]
Accessed Element: 1
Removed Element: 1
Updated ArrayList: 3, 2,
2. ListIterator interface trong Java
ListIterator interface giúp truy cập các phần tử trong một danh sách (list). Đặc điểm của ListIterator interface là có thể truy cập đến phần tử trước và sau của phần tử đang xem xét.
Các cấu trúc dữ liệu dạng list như ArrayList sẽ có một hàm listIterator()
để trả về một đối tượng kế thừa ListIterator để truy cập các phần tử trong list.
Các phương thức của ListIterator interface
ListIterator interface kế thừa Iterator interface nên nó sẽ có các hàm của Iterator interface. Và ListItertor interface cũng sẽ có những hàm khác:
hasNext()
trả về true nếu vẫn còn phần tử trong listnext()
trả về phần tử kế tiếp trong listnextIndex()
trả về chỉ số (index) của phần tử kế tiếp trong list mà hàmnext()
trả vềprevious()
trả về phần tử trước đó của phần tử đang truy cập trong listpreviousIndex()
trả về chỉ số (index) của phần tử trước đó của phần tử đang truy cập trong list mà hàmprevious()
trả vềremove()
xóa phần tử được trả về bởi hàmnext()
hoặcprevious()
set()
thay thế phần tử được trả về bởi hàmnext()
hoặcprevious()
bằng một phần tử cụ thể nào đó
Ví dụ sử dụng ListIterator interface
import java.util.ArrayList;
import java.util.ListIterator;
class Main {
public static void main(String[] args) {
//Tạo một ArrayList
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
//Tạo một đối tượng có kiểu ListIterator
ListIterator<Integer> iterate = numbers.listIterator();
//Sử dụng hàm next()
int number1 = iterate.next();
System.out.println("Next Element: " + number1);
//Sử dụng hàm nextIndex()
int index1 = iterate.nextIndex();
System.out.println("Position of Next Element: " + index1);
//Sử dụng hàm hasNext()
System.out.println("Is there any next element? " + iterate.hasNext());
}
}
Kết quả
ArrayList: [1, 3, 2]
Next Element: 1
Position of Next Element: 1
Is there any next element? true
For my thesis, I consulted a lot of information, read your article made me feel a lot, benefited me a lot from it, thank you for your help. Thanks!