Iterate an Enumeration in Java 8 Iterate an Enumeration in Java 8 java java

Iterate an Enumeration in Java 8


(This answer shows one of many options. Just because is has had acceptance mark, doesn't mean it is the best one. I suggest reading other answers and picking one depending on situation you are in. IMO:

  • for Java 8 Holger's answer is nicest, because aside from being simple it doesn't require additional iteration which happens in my solution.
  • for Java 9 I would pick solution describe in Tagir Valeev answer)

You can copy elements from your Enumeration to ArrayList with Collections.list and then use it like

Collections.list(yourEnumeration).forEach(yourAction);


If there are a lot of Enumerations in your code, I recommend creating a static helper method, that converts an Enumeration into a Stream. The static method might look as follows:

public static <T> Stream<T> enumerationAsStream(Enumeration<T> e) {    return StreamSupport.stream(        Spliterators.spliteratorUnknownSize(            new Iterator<T>() {                public T next() {                    return e.nextElement();                }                public boolean hasNext() {                    return e.hasMoreElements();                }            },            Spliterator.ORDERED), false);}

Use the method with a static import. In contrast to Holger's solution, you can benefit from the different stream operations, which might make the existing code even simpler. Here is an example:

Map<...> map = enumerationAsStream(enumeration)    .filter(Objects::nonNull)    .collect(groupingBy(...));


Since Java-9 there will be new default method Enumeration.asIterator() which will make pure Java solution simpler:

nets.asIterator().forEachRemaining(iface -> { ... });