java - 在 Object[] 数组上实现 Java 迭代器和可迭代接口(interface)

标签 java arrays loops iterator iterable

这是我实现 Iterator 的内部类:

public class myIterator implements Iterator<Object> {
    private int pos = 0;

    public boolean hasNext(){
        return pos < arrayPal.length;

    }
    public Object next(){
        return arrayPal[pos++];

    }
}

在这个内部类所在的类中,DynArray,(这是一个对象,它有一个名为 arrayPal 的任何类型对象的内部数组,以及一个 boolean 值,表示该数组是否可以存储空值) 我想为我的添加方法使用迭代器

public void add( T ele ) {

    int counter =0;
    int tempIndex =0;
    if(ele == null && this.allowed == false){
        throw new NullPointerException("This array does not accept null values!");
    }

    else{
        myIterator iterator = new myIterator();
        Iterator<T> it = this.iterator();


        for(Object o: this.arrayPal){
            System.out.print(it.hasNext());
            if(it.hasNext() == false && (this.arrayPal.length-1) > counter){
                arrayPal[counter+1] = ele;
            }
            else if (it.hasNext() == false && (arrayPal.length-1) == counter){
                //expand the array by quanta
                //add the the first newest index
                Object[] temp = new Object[this.arrayPal.length + quanta];

                for(Object b: this.arrayPal){
                    temp[tempIndex++] = b;
                }
                temp[this.arrayPal.length] = ele;
                this.arrayPal = temp;

            }
        counter++;
        }
}

然而,即使对于我列表中的最后一个元素,.hasNext() 也会一直返回 true。为什么是这样?

此外,它不允许我执行 this.arrayPal.iterator() 它说:

无法在数组类型上调用 iterator() 对象[]

为什么不呢?

最佳答案

您的add 方法获得一个新的Iterator 并多次调用it.hasNext()。它从不调用 it.next(),因此 Iterator 一直指向数组的第一个元素并且 hasNext() 永远不会返回 false (假设数组不为空)。

关于java - 在 Object[] 数组上实现 Java 迭代器和可迭代接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32616362/

相关文章:

java - 自定义 JSON 序列化和反序列化

arrays - C 中将字符串拆分为字母和数字的函数

Python - 如何从字符串列表中删除字母,将字符串更改为 float ,转换一些 float 并保持顺序

C++ 程序在条件为 false 之前退出循环

java - 尝试运行 javafx 应用程序时出现 "FXMLLoader.constructLoadException"

java - 使用数据提供者编写 Java 测试

java - Android,org.simpleframework.xml 持久化异常,元素 'foo' 已被使用

javascript - 如何从 Ember.js 中另一个 ArrayController 的选定值更新一个 ArrayController 的内容

php - 如何从 PHP 列表中随机选择 10 个东西?

PHP 脚本解析目录,列出所有图像并将类 ="last"添加到目录中的最后一个图像