What is difference between Enumeration and Iterator in Java? Answer (original) (raw)
Though both Iterator and Enumeration allows you to traverse over elements of Collections in Java, there is some significant difference between them e.g. Iterator also allows you to remove elements from the collection during traversal but Enumeration doesn't allow that, it doesn't get remove() method. Enumeration is also a legacy class and not all Collection supports it e.g. Vector supports Enumeration but ArrayList doesn't. On the other hand, Iterator is the standard class for iteration and traversal. By the way, what is the difference between Enumeration and Iterator in Java?
This question is from the early ages of Java interview, I have not seen this question in recent interviews but it was quite common during the 2000 to 2007 period, nowadays questions like the implementation of HashMap or ConcurrentHashMap, etc has taken their place.
Nonetheless, it's very important to know the fundamental difference between Iterator and Enumeration. Sometimes it's also asked as Iterator vs Enumeration or Enumeration vs Iterator which is the same.
An important point to note is that both Iterator and Enumeration provide a way to traverse or navigate through the entire collection in Java.
And, If you are a beginner in Java Programming then you can also check out these best Java Programming online courses to learn Java in a better and more structured way. This is one of the best and up-to-date courses to learn Java online.
Iterator vs Enumeration
Between Enumeration and Iterator**, Enumeration is older, and it's there from JDK1.0,** while iterator was introduced later. Iterator can be used with ArrayList, HashSet, and other collection classes.
Another similarity between Iterator and Enumeration in Java is that the functionality of the Enumeration interface is duplicated by the Iterator interface.
The only major difference between
Enumeration and iterator
is Iterator has a remove() method while Enumeration doesn't.
Enumeration acts as a Read-only interface because it has the methods only to traverse and fetch the objects, whereas by using Iterator we can manipulate the objects by adding and removing the objects from collection e.g. ArrayList.
Also, the Iterator is more secure and safe as compared to Enumeration because it does not allow other threads to modify the collection object while some thread is iterating over it and throws ConcurrentModificationException.
This is by far the most important fact for me for deciding between Iterator vs Enumeration in Java.
In Summary, both Enumeration and Iterator will give successive elements, but Iterator is the new and improved version where method names are shorter and has a new method called remove. Here is a short comparison:
Enumeration
- hasMoreElement()
- nextElement()
- N/A
Iterator
- hasNext()
- next()
- remove()
So Enumeration is used whenever we want to make Collection objects Read-only.
Here is also a nice table with difference of Iterator and Enumeration explained
That's all about difference between Enumeration and Iterator in Java. The most critical difference is that Enumeration is old and not preferred and it also doesn't have remove() method which Iterator has. It means using Iterator also allows you to remove elements during iteration.
If you are looking for some quality interview questions you can also check