Lặp lại và Enumeration đều là con trỏ để duyệt và truy cập một phần tử từ tập hợp. Cả hai đều thuộc khuôn khổ bộ sưu tập. Liệt kê đã được thêm vào trong JDK1.0 và Iterator trong phiên bản JDK.1.2 trong khung thu thập.
Phép liệt kê không thể thực hiện thay đổi cấu trúc trong bộ sưu tập vì nó có quyền truy cập chỉ đọc vào phần tử trong bộ sưu tập. Nó có các phương thức sau:
- * hasMoreElements ()
- * nextElement ()
Mặt khác, một trình lặp có thể đọc và loại bỏ phần tử trong bộ sưu tập. Nó có các phương thức sau -
- * hasNext ()
- * next ()
- * remove ()
Sr. Không. | Phím | Trình lặp lại | Bảng kê |
---|---|---|---|
1 | Cơ bản | Trong Iterator, chúng ta có thể đọc và loại bỏ phần tử trong khi duyệt phần tử trong bộ sưu tập. | Sử dụng Enumeration, chúng ta chỉ có thể đọc phần tử trong quá trình duyệt phần tử trong bộ sưu tập. |
2. | Quyền truy cập | Nó có thể được sử dụng với bất kỳ lớp nào của khung sưu tập. | Nó chỉ có thể được sử dụng với lớp kế thừa của khung sưu tập như Vector và HashTable. |
3. | Fail-Fast and Fail-An toàn | Bất kỳ thay đổi nào trong bộ sưu tập, chẳng hạn như xóa phần tử khỏi bộ sưu tập trong khi một luồng đang lặp lại bộ sưu tập thì nó sẽ ném ra ngoại lệ sửa đổi đồng thời. | Bản chất là không an toàn. Nó không đưa ra ngoại lệ sửa đổi đồng thời |
4. | Giới hạn | Chỉ có thể lặp lại hướng về phía trước | Không thể thực hiện các thao tác loại bỏ khi sử dụng Enumeration. |
5. | Phương thức | Nó có các phương thức sau: * hasNext () *Kế tiếp() *tẩy() | Nó có các phương thức sau: * hasMoreElements () * nextElement () |
Ví dụ về liệt kê
class EnumerationExample { public static void main(String args[]) { List list = new ArrayList(Arrays.asList( new String[] {"Apple", "Cat", "Dog", "Rat"})); Vector v = new Vector(list); delete(v, "Dog"); } private static void delete(Vector v, String name) { Enumeration e = v.elements(); while (e.hasMoreElements()) { String s = (String) e.nextElement(); if (s.equals(name)) { v.remove(name); } } // Display the names System.out.println("The names are:"); e = v.elements(); while (e.hasMoreElements()) { // Prints elements System.out.println(e.nextElement()); } } }
Ví dụ về Iterator
class IteratorExample { public static void main(String args[]) { List list = new ArrayList(Arrays.asList( new String[] {"Apple", "Cat", "Dog", "Rat"})); Vector v = new Vector(list); delete(v, "Dog"); } private static void delete(Vector v, String name) { Iterator i = v.iterator(); while (i.hasNext()) { String s = (String) i.next(); if (s.equals(name)) { i.remove(); } } // Display the names System.out.println("The names are:"); i = v.iterator(); while (i.hasNext()) { System.out.println(i.next()); } } }