我有一个简单的收藏问题。我有一个Set<String>
对象。我想要枚举该集合中的字符串。什么是最干净/最好的方法呢?
答案 0 :(得分:192)
答案 1 :(得分:27)
如果真的需要枚举,可以使用:
Enumeration<String> x = new Vector(set).elements();
如果尽可能使用Iterable<E>
会更好......
更好的选择是在Iterator<E>
周围编写一个小包装类。这样你就不必复制只是为了找到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());
}
}
答案 2 :(得分:5)
假设你的意思是数学意义上的枚举,最简洁的方法是通过for循环,适用于任何实现Iterable
的类:
Set<String> strs = ...
for (String s : strs) {
...
}
如果您确实需要Enumeration
,则可以通过调用Iterator
来实现一个适配器类来包装返回的iterator()
。 Apache Collections库中有一个适配器类:IteratorEnumeration
。
或者您可以使用Google的Guava库:
Set<String> mySet = ...
Enumeration<String> = Iterators.asEnumeration(mySet.iterator());