Iterator trong Java được sử dụng trong Colleciton framework để truy xuất từng phần tử một. Nó là một trình vòng lặp phổ quát vì chúng ta có thể áp dụng nó cho bất kỳ đối tượng Colleciton. Bằng cách sử dụng Iterator, chúng ta có thể thực hiện cả thao tác đọc và xóa. Đây là phiên bản cải tiến của Enumeration với chức năng bổ sung là loại bỏ một phần tử.
Iterator phải được sử dụng bất cứ khi nào chúng ta muốn liệt kê các phần tử trong tất cả các giao diện được triển khai của Khung sưu tập như Set, List, Queue, Deque và tất cả các lớp đã triển khai của giao diện Map. Trình vòng lặp là con trỏ duy nhất có sẵn cho toàn bộ khung bộ sưu tập. Một đối tượng iterator có thể được tạo bằng cách gọi phương thức iterator() có trong giao diện Collection.
Các phương thức của Interface Iterator trong Java
Interface iterator định nghĩa ba phương thức như được liệt kê dưới đây:
- hasNext(): Trả về true nếu phép lặp có nhiều phần tử hơn.
2. next(): Trả về phần tử tiếp theo trong lần lặp. Nó ném ra NoSuchElementException nếu không còn phần tử nào nữa.
3. remove(): Loại bỏ phần tử tiếp theo trong lần lặp. Phương thức này chỉ có thể được gọi một lần cho mỗi lệnh gọi tới next().
Java Iterator hoạt động nội bộ như thế nào?
Trong phần này, chúng ta sẽ cố gắng hiểu cách Java Iterator và các phương thức của nó hoạt động nội bộ. Chúng ta hãy lấy đối tượng LinkedList sau đây để hiểu chức năng này.
Bây giờ chúng ta tạo một đối tượng Iterator trên đối tượng List như dưới đây:
Iterator<String> citiesIterator = cities.iterator();
Trình vòng lặp “cityIteartor” sẽ trông như thế này –

Ở đây Con trỏ của Iterator đang trỏ trước phần tử đầu tiên của List.
Bây giờ chúng ta sẽ chạy đoạn mã sau.
citiesIterator.hasNext();
citiesIterator.next();

Khi chúng ta chạy đoạn mã trên, Con trỏ của Iterator sẽ trỏ đến phần tử đầu tiên trong danh sách như trong sơ đồ trên.
Bây giờ chúng ta sẽ chạy đoạn mã sau.
citiesIterator.hasNext();
citiesIterator.next();

Khi chúng ta chạy đoạn mã trên, Con trỏ của Iterator sẽ trỏ đến phần tử thứ hai trong danh sách như trong sơ đồ trên. Thực hiện quy trình này để đưa Con trỏ của Iterator đến phần tử cuối của Danh sách.

Sau khi đọc phần tử cuối cùng, nếu chúng ta chạy đoạn mã bên dưới, nó sẽ trả về giá trị “false”.
citiesIterator.hasNext();

Khi Con trỏ của Iterator trỏ đến phần tử sau phần tử cuối cùng của List, phương thức hasNext() trả về giá trị sai.
Note: Sau khi quan sát tất cả các sơ đồ này, chúng ta có thể nói rằng Java Iterator chỉ hỗ trợ Lặp lại hướng chuyển tiếp như trong sơ đồ bên dưới. Vì vậy nó còn được gọi là Con trỏ một chiều.

Ví dụ:
0 Nhận xét