Computer >> Máy Tính >  >> Lập trình >> Java

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

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());
      }
   }
}