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