I have a simple collections question. I have a Set<String>
object. I want an Enumeration<String>
of the String
s 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?
The EnumSet is one of the specialized implementations of the Set interface for use with the enumeration type. A few important features of EnumSet are as follows: It extends AbstractSet class and implements Set Interface in Java. EnumSet class is a member of the Java Collections Framework & is not synchronized.
You can create Enum from String by using Enum. valueOf() method. valueOf() is a static method that is added on every Enum class during compile-time and it's implicitly available to all Enum along with values(), name(), and cardinal() methods.
java.util.Collections.enumeration(set)
Javadoc
Returns an enumeration over the specified collection. This provides interoperability with legacy APIs that require an enumeration as input.
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()); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With