问题描述
我有一个简单的收藏问题.我有一个 Set
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?
推荐答案
无需编写自己的(尽管我将在下面留下实现以供后代使用) - 请参阅 Kevin Bourrillion 对 JDK 中的答案的回答.
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();
如果可能的话,最好使用 Iterable<E>...
It would be better to use Iterable<E> if at all possible though...
更好的选择是围绕 Iterator
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()); } }