java - 将枚举转换为迭代器

标签 java iterator nullpointerexception enumeration

我在工作表上遇到了一个问题,即创建一个适配器以将枚举转换为迭代器。当我尝试运行以下代码时,出现空指针异常。

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/

相关文章:

java - 二维数组中的 NullPointerException

java - 空指针异常在哪里?

java - 导入 rt.jar 给我 dalvik 错误

java - Java中如何遍历vector只存储指定的类?

c++ - 从指针获取迭代器

python:压缩文件迭代器一起提取下一个行

java - 错误 :getReadableDatabase() on a null object reference

java - ClassLoader.getSystemClassLoader() 与 obj.getClass().getClassLoader().getSystemClassLoader()

java - 如何配置ResourceHttpRequestHandler支持的方法?

java - 基于关键字的最近邻算法或库