Trong Java, Iterator
và ListIterator
là hai interface cho phép bạn duyệt qua các phần tử trong một tập hợp (collection). Mặc dù chúng có nhiều điểm tương đồng, nhưng chúng cũng có những khác biệt quan trọng. Bài viết này sẽ trình bày chi tiết về sự khác biệt giữa hai interface này, giúp bạn hiểu rõ hơn về cách sử dụng chúng trong các tình huống khác nhau.
Iterator
là một interface trong Java Collections Framework cho phép bạn duyệt qua các phần tử trong một collection như ArrayList
, HashSet
, và LinkedList
.
next()
) khỏi collection.import java.util.ArrayList; import java.util.Iterator; public class IteratorExample { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } }
ListIterator
là một interface mở rộng từ Iterator
, cung cấp khả năng duyệt qua các phần tử trong một danh sách (List
) theo cả hai chiều: từ đầu đến cuối và từ cuối về đầu.
Ngoài các phương thức của Iterator
, ListIterator
còn có thêm nhiều phương thức như:
import java.util.ArrayList; import java.util.ListIterator; public class ListIteratorExample { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); ListIterator<String> listIterator = list.listIterator(); // Duyệt qua danh sách từ đầu đến cuối while (listIterator.hasNext()) { System.out.println(listIterator.next()); } // Duyệt qua danh sách từ cuối về đầu while (listIterator.hasPrevious()) { System.out.println(listIterator.previous()); } } }
Tiêu chí | Iterator | ListIterator |
---|---|---|
Hướng duyệt | Chỉ duyệt từ đầu đến cuối | Duyệt cả từ đầu đến cuối và từ cuối về đầu |
Chỉ số | Không hỗ trợ chỉ số | Hỗ trợ chỉ số của phần tử tiếp theo và trước đó |
Thêm và thay thế phần tử | Không hỗ trợ thêm phần tử vào collection | Hỗ trợ thêm và thay thế phần tử trong danh sách |
Phương thức | Chỉ có hasNext() , next() , remove() | Bao gồm tất cả các phương thức của Iterator + hasPrevious() , previous() , nextIndex() , previousIndex() , add() , set() |
Iterator
:
ListIterator
:
Kết luận, cả Iterator
và ListIterator
đều là công cụ mạnh mẽ trong Java để làm việc với các collection. Tùy thuộc vào nhu cầu cụ thể của bạn, bạn có thể chọn một trong hai interface này để thực hiện việc duyệt qua các phần tử một cách hiệu quả và linh hoạt.