Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa Iterator và ListIterator trong Java

Iterator và ListIterator là hai trong số ba con trỏ của Java. Cả Iterator và ListIterator đều được xác định bởi Collection Framework trong gói J ava.Util . ListIterator là giao diện con của giao diện Iterator. Sự khác biệt chính giữa Iterator và ListIterator là Iterator có thể di chuyển ngang qua các phần tử trong bộ sưu tập theo hướng thuận trong khi đó, ListIterator có thể di chuyển ngang qua các phần tử trong bộ sưu tập theo cả hướng tiến cũng như hướng ngược .

Chúng ta hãy thảo luận về một số khác biệt hơn giữa Iterator và ListIterator với sự trợ giúp của biểu đồ so sánh được hiển thị bên dưới.

Biểu đồ so sánh

Cơ sở để so sánhLặp lạiListIterator
Căn bảnIterator có thể duyệt qua các phần tử trong bộ sưu tập chỉ theo hướng thuận.ListIterator có thể duyệt qua các phần tử trong một bộ sưu tập theo hướng tiến cũng như hướng lùi.
Thêm vàoIterator không thể thêm các phần tử vào một bộ sưu tập.ListIteror có thể thêm các yếu tố vào bộ sưu tập.
Sửa đổiTrình vòng lặp không thể sửa đổi các thành phần trong bộ sưu tập.ListIterator có thể sửa đổi các thành phần trong bộ sưu tập bằng cách sử dụng set ().
Đi quaIterator có thể duyệt qua Map, List và Set.ListIterator chỉ có thể duyệt qua các đối tượng List.
Mục lụcIterator không có phương thức để lấy chỉ mục của phần tử trong tập hợp.Sử dụng ListIterator, bạn có thể nhận được một chỉ mục của phần tử trong một bộ sưu tập.

Định nghĩa của Iterator

Iterator là một giao diện trong Bộ sưu tập Khung . Nó được sử dụng để đi qua các yếu tố bộ sưu tập. Iterator cho phép bạn lặp lại từng phần tử trong bộ sưu tập, lấy các phần tử từ bộ sưu tập hoặc loại bỏ các phần tử khỏi bộ sưu tập. Bạn có thể nhận thấy rằng bạn không thể sửa đổi bất kỳ yếu tố nào trong bộ sưu tập bằng Iterator.

Iterator có một phương thức iterator () trả về iterator để bắt đầu bộ sưu tập. Khi bạn nhận được một trình vòng lặp để bắt đầu một bộ sưu tập, sau đó duyệt qua các phần tử trong bộ sưu tập sẽ thiết lập một vòng lặp gọi hasNext () mỗi lần vòng lặp lặp lại. HasNext () nếu trả về true, điều đó có nghĩa là phần tử tiếp theo nằm trong bộ sưu tập và nếu nó trả về false thì có nghĩa là tất cả các phần tử được duyệt qua. Sau đó, bên trong vòng lặp, bạn có thể nhận được từng phần tử trong Bộ sưu tập bằng cách sử dụng next () . Phương thức next () trả về phần tử tiếp theo của tập hợp.

Hạn chế:

Sử dụng Iterator bạn chỉ có thể duyệt qua một bộ sưu tập theo hướng chuyển tiếp.
Sử dụng Iterator, bạn không thể thao tác hoặc sửa đổi các thành phần trong bộ sưu tập.

Định nghĩa của ListIterator

ListIterator là một giao diện trong khung Collection và nó mở rộng giao diện Iterator . Sử dụng ListIterator, bạn có thể duyệt qua các phần tử của bộ sưu tập theo cả hai chiều tiếnlùi . Bạn cũng có thể thêm, xóa hoặc sửa đổi bất kỳ yếu tố nào trong bộ sưu tập. Nói tóm lại, chúng ta có thể nói nó loại bỏ nhược điểm của Iterator.

Các phương thức của ListIterator như sau:

hasNext () : Nếu trả về true xác nhận rằng có nhiều phần tử hơn trong một bộ sưu tập.
next () : Trả về các phần tử tiếp theo của danh sách.
next Index () : Trả về chỉ mục của các phần tử tiếp theo trong danh sách.
hasPreingly () : Trả về true nếu có các phần tử theo hướng ngược lại trong bộ sưu tập.
trước () : Trả về phần tử trước trong bộ sưu tập.
before Index () : Trả về chỉ mục của phần tử trước trong bộ sưu tập.
remove () : Xóa phần tử khỏi bộ sưu tập.
set () : Sửa đổi thành phần trong bộ sưu tập.
add () : Thêm phần tử mới trong bộ sưu tập.

Sự khác biệt chính giữa Iterator và ListIterator

  1. Sự khác biệt cơ bản giữa Iterator và ListIterator là cả hai đều là con trỏ, Iterator có thể di chuyển ngang qua các phần tử trong một bộ sưu tập theo hướng thuận. Mặt khác, ListIterator có thể di chuyển theo cả hai hướng tiến và lùi.
  2. Sử dụng iterator, bạn không thể thêm bất kỳ phần tử nào vào bộ sưu tập. Nhưng, bằng cách sử dụng ListIterator, bạn có thể thêm các phần tử vào bộ sưu tập.
  3. Sử dụng Iterator, bạn không thể xóa phần tử trong bộ sưu tập, vì Bạn có thể xóa phần tử khỏi bộ sưu tập bằng ListIterator.
  4. Sử dụng Iterator, bạn có thể duyệt qua tất cả các bộ sưu tập như Map, List, Set. Nhưng, bằng ListIteror, bạn chỉ có thể duyệt qua các đối tượng được triển khai.
  5. Bạn có thể truy xuất chỉ mục của một phần tử bằng cách sử dụng Iterator. Nhưng vì Danh sách là tuần tự và dựa trên chỉ mục, bạn có thể truy xuất chỉ mục của một phần tử bằng cách sử dụng ListIterator.

Phần kết luận:

Bạn có thể sử dụng ListIterator khi bạn phải đặc biệt di chuyển ngang qua một đối tượng List theo cả hai chiều thuận và ngược. Khác, bạn có thể sử dụng Iterator vì nó hỗ trợ tất cả các đối tượng bộ sưu tập kiểu.

Top