javacollectionssetenumeration

Java: Enumeration from Set<String>


I have a simple collections question. I have a Set<String> object. I want an Enumeration<String> of the Strings in that Set. I need an Enumeration<String> since I am overriding a method that specifically returns an Enumeration<String>. What is the cleanest/best way to go about it?


Solution

  • EDIT: There's no need to write your own (although I'll leave the implementation below for posterity) - see Kevin Bourrillion's answer for the one in the JDK.


    If you really need an enumeration, could could use:

    Enumeration<String> x = new Vector(set).elements();
    

    It would be better to use Iterable<E> if at all possible though...

    A better alternative is to write a small wrapper class around Iterator<E>. That way you don't have to take a copy just to find an imlementation of Enumeration<E>:

    import java.util.*;
    
    class IteratorEnumeration<E> implements Enumeration<E>
    {
        private final Iterator<E> iterator;
        
        public IteratorEnumeration(Iterator<E> iterator)
        {
            this.iterator = iterator;
        }
        
        public E nextElement() {
            return iterator.next();
        }
        
        public boolean hasMoreElements() {
            return iterator.hasNext();
        }
        
    }
    
    
    public class Test {
        public static void main(String[] args) {
            Set<String> set = new HashSet<String>(); 
            Enumeration<String> x = new IteratorEnumeration<String>(set.iterator());
        }
    }