fre*_*low 15 java foreach iterator enumeration adapter
我有一个实现Enumeration<T>接口的类,但Java的foreach循环需要Iterator<T>接口.是否有一个Enumeration到IteratorJava的标准库适配器?
Boz*_*zho 11
您需要一个所谓的"适配器",以适应Enumeration其他不兼容的Iterator.Apache commons-collections有EnumerationIterator.用法是:
Iterator iterator = new EnumerationIterator(enumeration);
Run Code Online (Sandbox Code Playgroud)
一)我敢肯定你的意思是Enumeration,不是Enumerator
的b)番石榴提供了一个辅助方法Iterators.forEnumeration(enumeration)生成从枚举迭代器,但不会帮助你;因为你需要一个Iterable(迭代器的供应商),而不是Iterator
C)你可以用这个助手类做到这一点:
public class WrappingIterable<E> implements Iterable<E>{
private Iterator<E> iterator;
public WrappingIterable(Iterator<E> iterator){
this.iterator = iterator;
}
@Override
public Iterator<E> iterator(){
return iterator;
}
}
Run Code Online (Sandbox Code Playgroud)
现在您的客户端代码如下所示:
for(String string : new WrappingIterable<String>(
Iterators.forEnumeration(myEnumeration))){
// your code here
}
Run Code Online (Sandbox Code Playgroud)
但值得努力吗?
| 归档时间: |
|
| 查看次数: |
8631 次 |
| 最近记录: |