wel*_*lly 49 java collections enumeration set
我有一个简单的收藏问题.我有一个Set<String>对象.我想要枚举该集合中的字符串.什么是最干净/最好的方法呢?
Kev*_*ion 195
java.util.Collections.enumeration(set)
的Javadoc
返回指定集合的枚举.这提供了与需要枚举作为输入的旧API的互操作性.
Jon*_*eet 27
编辑:没有必要自己编写(虽然我将下面的实现留给后人) - 请参阅Kevin Bourrillion对JDK中的答案.
如果你真的需要枚举,可以使用:
Enumeration<String> x = new Vector(set).elements();
Run Code Online (Sandbox Code Playgroud)
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());
}
}
Run Code Online (Sandbox Code Playgroud)
假设你的意思是数学意义上的枚举,最简洁的方法是通过for循环,适用于任何实现的类Iterable:
Set<String> strs = ...
for (String s : strs) {
...
}
Run Code Online (Sandbox Code Playgroud)
如果你真的需要一个,Enumeration你可以实现一个适配器类来包装Iterator返回的调用iterator().Apache Collections库中有一个适配器类:IteratorEnumeration.
或者您可以使用Google的Guava库:
Set<String> mySet = ...
Enumeration<String> = Iterators.asEnumeration(mySet.iterator());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43020 次 |
| 最近记录: |