Những điều cơ bản cần biết 

Trước khi nói đến Iterator và cách sử dụng Iterator, bạn phải biết:

– Mỗi collection là một Iterable. Ta có thể lấy đối tượng Iterable của nó để duyệt toàn bộ các phần tử trong collection.

– Interface Collection kế thừa từ interface Iterable. interface Iterable định nghĩa phương thức iterator, trả về một iterator.

Nói đến Iterator thì bạn sẽ muốn duyệt qua các phần tử trong một tập hợp. Ví dụ, bạn có thể muốn hiển thị mỗi phần tử.

Cách đơn giản nhất để thực hiện điều này là gọi đến một Iterator, là một đối tượng mà triển khai  Iterator hoặc List Iterator interface.

Một đối tượng Iterator là có khả năng duyệt qua phần tử, lấy phần tử, loại bỏ phần tử khỏi tập hợp. Thường trước khi truy cập một tập hợp, bạn phải có một Iterator. Các tập hợp đều cung cấp phương thức iterator để lấy Iterator bắt đầu của tập hợp.

Trước khi bạn có thể truy cập một Collection thông qua một Iterator, bạn phải có được nó. Mỗi lớp Collection cung cấp một phương thức iterator() mà trả về một iterator tới phần bắt đầu của Collection. Bởi sử dụng đối tượng Iterator, bạn có thể truy cập mỗi phần tử trong Collection, từng phần tử một tại một thời điểm.

Nói chung, để sử dụng một iterator để tuần hoàn qua các nội dung của một Collection, bạn theo các bước sau:

  • Đạt được một iterator tới phần đầu của Collection bằng cách gọi phương thức iterator() của Collection trong Java.
  • Thiết lập một vòng lặp mà tạo triệu hồi tới hasNext(). Vòng lặp này lặp đi lặp lại tới khi hasNext() trả về true.
  • Trong vòng lặp, thu được mỗi phần tử bởi triệu hồi phương thức next().

Ví dụ đơn giản 

Sử dụng Iterator để hiển thị nội dung LinkedList

 Các phương thức và miêu tả 

1. boolean hasNext( )

Trả về true nếu có nhiều phần tử. Nếu không là false

2. Object next( )

Trả về phần tử kế tiếp. Ném NoSuchElementException nếu không có một phần tử kế tiếp

3. void remove( )

Gỡ bỏ phần tử hiện tại. Ném IllegalStateException nếu cố gắng gọi phương thức remove() mà không được đặt trước một triệu hồi tới next()

Sự liên quan giữa Iterator và Iterable 

Iterator và Iterable có sự liên quan chặt chẽ với nhau.

Ta thử Coi Iterator là một giao diện giúp chúng ta duyệt qua bộ sưu tập với sự trợ giúp của một số phương thức không xác định như hasNext (), next () và remove ()

Mặt khác, Iterable là một giao diện khác, nếu được triển khai bởi một lớp sẽ buộc lớp đó có thể lặp và là mục tiêu cho cấu trúc For-Each. Nó chỉ có một phương thức có tên iterator () xuất phát từ chính giao diện Iterator.

Khi một bộ sưu tập có thể lặp lại, thì nó có thể được lặp lại bằng cách sử dụng một trình vòng lặp.

Tóm lại:

Iterator trong Java là một interface được sử dụng để thay thế Enumerations trong Java Collection Framework. Bạn có thể sử dụng iterator để: 

  • Duyệt các phần tử từ đầu đến cuối của một collection. 
  • Iterator cho phép xóa phần tử khi lặp một collection. 
  • Với một số phương thức của Iterator  mà bạn có thể tham khảo.

http://tutorials.jenkov.com/java-collections/iterator.html

https://viettuts.vn/java-collection/su-dung-iterator-trong-java

Author: Lê Bá Đạt


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.