So sánh Iterator và ListIterator

Iterator là một mẫu thiết kế. Nó quy định cách thức duyệt qua các phần tử của một collection. Collection là một tập hợp như mảng, stack, list. Kết luận Iterator nó cho phép duyệt qua các phần tử của một tập hợp theo một cách thống nhất mà không quan tâm tới cách tổ chức của tập hợp.

Giữa Iterator và ListIterator có 2 điểm khác nhau chủ yếu như sau:

Thứ nhất: Iterator được sử dụng để duyệt qua các Interface Collections như List và Set, trong khi ListIterator chỉ được sử dụng để duyệt qua List.

Thứ hai: Iterator chỉ có thể duyệt qua các phần tử theo một hướng (từ đầu đến cuối danh sách), trong khi ListIterator có thể duyệt qua các phần tử theo 2 hướng (từ đầu đến cuối danh sách và ngược lại) còn Iterator thì không.

Dưới đây là hình ảnh các phương thức của cả 2 cách duyệt, ListIterator extends Iterator vì thế nó có các phương thức của cha, đồng thời nó duyệt list theo 2 chiều nên nó có các phương thức duyệt ngược lại như .hasPrevious(), .previous() và phương thức set() giá trị mới tại 1 state của nó.

UntitledUntitled2

Vì vậy nếu Colection của bạn là một List thì chúng ta nên sử dụng interface ListIterator để duyệt nhé nó có nhiều phương thức hỗ trợ hơn và hỗ trợ duyệt 2 chiều luôn nhé. Bài sau chúng ta sẽ đi so sánh thời gian duyệt của các anh em For, Foreach, Iterator và ListIterator để xem thời gian cái nào duyệt nhanh nhất trong một List có số phần tử bằng nhau nhé. Cảm ơn mọi người đã theo dõi surrender !

Advertisements