What is the difference between Enumeration and Iterator in Java?
Enumeration and Iterator are two interfaces in java.util package which are used to traverse over the elements of a Collection object. Though they perform the same function i.e traversing the Collection object, there are some differences exist between them. Using Enumeration, you can only traverse the Collection object. But using Iterator, you can also remove an element while traversing the Collection.
This is the one major difference between Enumeration and Iterator in java. You can say Iterator is some what advanced version of Enumeration. In this post, we will see the differences between Enumeration Vs Iterator In Java.
The Difference between Enumeration and Iterator is given as follows,
Iterator interface is introduced from JDK 1.2 where as Enumeration interface is there from JDK 1.0.
2) remove() method
This is the main difference between Enumeration and Iterator interface. Enumeration only traverses the Collection object. You can’t do any modifications to Collection while traversing the Collection using Enumeration. Where as Iterator interface allows us to remove an element while traversing the Collection object. Iterator has remove() method which is not there in the Enumeration interface.
3) Fail-Fast Vs Fail-Safe
Iterator is a fail-fast in nature. i.e it throws ConcurrentModificationException if a collection is modified while iterating other than it’s own remove() method. Where as Enumeration is fail-safe in nature. It doesn’t throw any exceptions if a collection is modified while iterating.
4) Safe And Secure
As Iterator is fail-fast in nature and doesn’t allow modification of a collection by other threads while iterating, it is considered as safe and secure than Enumeration.
5) Which One To Use
According to Java API Docs, Iterator is always preferred over the Enumeration.
1.Remove() method : Iterator has the remove() method while Enumeration does not have remove() method.
Enumeration interface acts as a read only interface, one can not do any modifications to Collection while traversing the elements of the Collection.
Iterator can do modifications (e.g using remove() method it removes the element from the Collection during traversal).
Iterators allow the caller to remove elements from the underlying collection during the iteration with well-defined semantics.
Enumeration is used for read only access while Iterator is useful to manipulate the list.
2. Addition to JDK : Enumeration is added to the jdk1.0 version while Iterator is added in jdk1.2 version.
3. Fail-fast or Fail-safe : Enumeration is fail-safe in nature. It does not throw ConcurrentModificationException if Collection is modified during the traversal.
Iterator is fail-fast in nature. It throws ConcurrentModificationException if a Collection is modified while iterating other than its own remove() method.
4. Legacy : Enumeration is a legacy interface which is used for traversing Vector, Hashtable.
Iterator is not a legacy interface. Iterator can be used for the traversal of HashMap, LinkedList, ArrayList, HashSet, TreeMap, TreeSet .
5. Preference : According to Oracle docs,
The functionality of Enumeration is duplicated by the iterator interface.Iterator adds an optional remove operation,and has shorter method names. New implementations should consider using Iterator in preference to Enumeration
Get your answer from here: