Thứ Hai, 9 tháng 1, 2012

Iterator versus Enumeration

Iterator versus Enumeration

Mình xài 2 interface này cũng nhiều lần rồi nhưng hôm nay thì mới biết được tại sao lão bán "cafe dạo" Java sinh ra 2 bác này.Mình muốn chia sẻ và mong nhận được ý kiến đóng góp của các bạn nhé.
 
-Công dụng : là duyệt các Collections objects 1 cách tuần tự.

-Enumeration có thể được dùng với Vector và HashTable.

-Iterator có thể dùng được hết với các Collection objects

-Enumeration nhanh hơn Iterator gần 50% và sử dụng rất ít bộ nhớ(mình đã viết chương trình test thử) nên được sử dụng cho những nhu cầu cơ bản.

-Iterator an toàn hơn Enumeration : Iterator luôn luôn từ chối các hành động chỉnh sửa collection khi nó đang được lặp bằng Iterator.Nếu hành động đó cố tình can thiệp thì Iterator sẽ quăng ra 1 cái exception là ConcurrentModificationException.

Ví dụ :
Vector <String> vector = new Vector<String>();
vector.add("a");
vector.add("b");
Enumeration <String> _enum = vector.elements();
Iterator <String> _iter  = vector.iterator();
while(_iter.hasNext())
{
  if (){
   vector.remove(index);<---ConcurrentModificationException Exception
  }
  System.out.println(_iter.next());
}
while(_enum.hasMoreElements())
{
  if (){
   vector.remove(index);<---không có lỗi
}
 
  System.out.println(_enum.nextElement());
}

Không có nhận xét nào:

Đăng nhận xét