Java:从Set <String>枚举

我有一个简单的collections问题。 我有一个Set<String>对象。 我想要枚举该集合中的string。 什么是最干净/最好的方式去做呢?

编辑:有没有必要写自己的(虽然我将离开后面的实现下一代的后代) – 见凯文Bourrillion的答案在JDK的。


如果你真的需要一个枚举,可以使用:

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

如果尽可能使用Iterable<E>会更好…

更好的select是围绕Iterator<E>编写一个小的包装类。 这样,您不必为了find一个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()); } } 

java.util.Collections.enumeration(set)

的Javadoc

返回指定集合的​​枚举。 这提供了与需要枚举作为input的传统API的互操作性。

假设你指的是math意义上的枚举,最干净的方法是通过for循环,适用于任何实现Iterable类:

 Set<String> strs = ... for (String s : strs) { ... } 

如果你真的需要一个Enumeration你可以实现一个适配器类来包装调用iterator()返回的Iterator 。 Apache Collections库中有一个适配器类: IteratorEnumeration

或者你可以使用谷歌的番石榴图书馆:

 Set<String> mySet = ... Enumeration<String> = Iterators.asEnumeration(mySet.iterator());