我在工作表上遇到了一个问题,即创建一个适配器以将枚举转换为迭代器。当我尝试运行以下代码时,出现空指针异常。
import java.util.Vector;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Iterator;
public class ConvertEnumeration {
public static void main(String [] args) {
int [] ourArray = {0,1,2,3,4,5,6,7,8,9};
Vector vector = new Vector(Arrays.asList(ourArray));
//Get Enumerator
Enumeration enumerator = vector.elements();
EnumerationToIterator enumToIt = new EnumerationToIterator(enumerator);
while(enumToIt.hasNext()) {
System.out.println(enumToIt.next());
}
}
}
//Convert our enumeration to Iterator!
class EnumerationToIterator implements Iterator {
//Our enumeration
Enumeration enmueration;
//Constructor
public EnumerationToIterator(Enumeration enmueration){
enmueration = this.enmueration;
}
//Our Methods
public boolean hasNext(){
return enmueration.hasMoreElements();
}
public Object next(){
return enmueration.nextElement();
}
public void remove(){
throw new UnsupportedOperationException();
}
}
另一点要注意的是,在我首先创建 Enumeration 之后,我无法从它打印出 int。
最佳答案
Java 5 及更高版本
无需重新发明轮子。只需使用 Collections.list(Enumeration<T> e)
,它返回一个 ArrayList<T>
.然后使用 ArrayList.iterator()
得到一个Iterator
.
Java 9 及更高版本
现在枚举 have a method直接转换为迭代器:
enumeration.asIterator();
关于java - 将枚举转换为迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13073094/