Bảng liệt kê vs Iterator
Có nhiều cấu trúc dữ liệu đóng vai trò là các bộ sưu tập trong Java, chẳng hạn như vectơ, bảng Hash và các lớp thực hiện Khung bộ sưu tập Java (tức là HashMap, Hashset, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap và LinkedHashset). Có nhiều cách để lặp qua các phần tử riêng lẻ của các đối tượng trong Java. Java cung cấp hai giao diện để thực hiện công việc này dễ dàng hơn. Enumutions và Iterator là hai trong số các giao diện được tìm thấy trong gói java.util cung cấp chức năng để liệt kê thông qua các chuỗi hoặc các đối tượng với một bộ các mục. Trình liệt kê được giới thiệu trong JDK 1.0 và Trình lặp được giới thiệu trong JDK 1.2 hầu như trùng lặp chức năng của Trình liệt kê (trong Khung sưu tập).
Bảng liệt kê là gì?
Enumutions là một giao diện công khai trong Java, được giới thiệu trong JDK 1.0, cung cấp khả năng liệt kê thông qua các chuỗi các phần tử. Nó được tìm thấy trong gói java.util. Khi giao diện liệt kê được thực hiện bởi một đối tượng, đối tượng đó có thể tạo ra một chuỗi các phần tử. Giao diện liệt kê có hai phương pháp. Phương thức hasMoreElements () sẽ kiểm tra xem phép liệt kê này có chứa nhiều phần tử hơn không và nextEuity () trả về phần tử tiếp theo trong chuỗi (nếu có ít nhất một phần tử nữa). Nói cách khác, bằng cách gọi nextEuity () liên tiếp, lập trình viên có thể truy cập các phần tử riêng lẻ trong chuỗi. Ví dụ: để in tất cả các phần tử trong Vector v1 bằng Enumerator, đoạn mã sau có thể được sử dụng.
Bảng liệt kê e = v1.elements ();
While (e.hasMoreLements ())
System.out.println (e.nextEuity ());
Trình liệt kê cũng có thể được sử dụng để xác định luồng đầu vào cho các đối tượng SequenceInputStream.
Lặp đi lặp lại là gì?
Iterator là một giao diện chung trong gói Java.util, cho phép lặp qua các phần tử của các đối tượng bộ sưu tập thực hiện khung Bộ sưu tập (như ArrayList, LinkedList, v.v.). Điều này đã được giới thiệu trong JDK 1.2 và thay thế Trình liệt kê trong Khung công tác sưu tập Java. Iterator có ba phương thức. Phương thức hasNext () kiểm tra xem có các phần tử còn lại trong tập hợp hay không và phương thức next () trả về phần tử tiếp theo trong chuỗi. Phương thức remove () có thể được sử dụng để xóa phần tử hiện tại khỏi bộ sưu tập cơ bản. Ví dụ: để in tất cả các phần tử trong Vector v1 bằng Iterator, đoạn mã sau có thể được sử dụng.
Trình lặp i = v1.elements ();
Trong khi (i.hasNext ())
System.out.println (e.next ());
Sự khác biệt giữa liệt kê và lặp?
Mặc dù, Enumutions và Iterator là hai trong số các giao diện được tìm thấy trong gói java.util, cho phép lặp / liệt kê thông qua các phần tử của một chuỗi, chúng có những điểm khác biệt. Trên thực tế, Iterator, được giới thiệu sau Enumutions, thay thế Enumutions trong khung công tác Bộ sưu tập Java. Không giống như liệt kê, Iterator không an toàn. Điều này có nghĩa là không được phép sửa đổi đồng thời (đối với bộ sưu tập cơ bản) khi Iterator được sử dụng. Điều này rất hữu ích trong các môi trường đa luồng, nơi luôn có nguy cơ sửa đổi đồng thời. Trong trường hợp có sửa đổi đồng thời, đối tượng Iterator sẽ đưa ra một concExModificationException. Iterator có tên phương thức ngắn hơn so với Enumerator. Hơn nữa, iterator có chức năng bổ sung là xóa các phần tử trong quá trình lặp (không thể sử dụng Enumerator). Vì vậy, nếu có nhu cầu xóa các phần tử khỏi bộ sưu tập, Iterator là tùy chọn duy nhất có thể được xem xét.