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

One comment

Để lại bình luận

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s