有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何初始化自定义迭代器?

我试图制作的程序包括创建一个名为Matrix的类,该类使用两个自定义迭代器rowColumIteratorcolumRowIterator进行迭代。问题是,在Matrix类中初始化迭代器时,会发生以下错误:

Cannot resolve method 'iterator()'

我不知道问题是在如何创建迭代器还是在Matrix类中

迭代器代码是:

public class rowColumnIterator<T> implements Iterator<T> {

    private T[][] dataset;
    private int rowIndex;
    private int columnIndex;

    public rowColumnIterator(T[][] dataset) {
        this.dataset = dataset;
    }

    @Override
    public boolean hasNext() {
        if (rowIndex >= dataset.length)
            return false;
        if (columnIndex >= dataset[rowIndex].length &&
                (rowIndex >= dataset.length || rowIndex == dataset.length - 1))
            return false;
        return true;
    }

    @Override
    public T next() {
        if (!hasNext())
            throw new NoSuchElementException();
        if (columnIndex >= dataset[rowIndex].length) {
            rowIndex++;
            columnIndex = 0;
        }
        return dataset[rowIndex][columnIndex++];
    }

    @Override
    public void remove() {
        throw new UnsupportedOperationException("Not yet implemented");
    }

}

在matrix类中,我在构造函数中有:

    this.matrix = new int[rows][columns];
    rowColumnIterator<Integer> iterator = this.matrix.iterator();

如果你能告诉我我做错了什么,我将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    必须用迭代器的构造函数实例化迭代器:

    rowColumnIterator<Integer> iterator = new rowColumnIterator<>(this.matrix);