java - Java 二维数组的迭代器和可迭代对象

标签 java iterator iterable

我为一个数组创建了两个迭代器:第一个迭代器按行运行数组 (iteratorRow),然后按列运行,第二个迭代器首先按列运行,然后按行运行 (iteratorColumn)。

我有另一个类 Matrix,在其中我必须创建两个方法来执行迭代(iteratorRowColumn 和 iteratorColumnRow),它们返回已创建的迭代器以便其他类可以访问。

数组必须实现 Iterable 接口(interface),并且可以通过调用 iterator() 方法来配置(使用 boolean 值)应该对两个迭代器中的哪一个进行退款。

我怎样才能做到这一点?我必须做一些 setter/getter 方法吗?像这样的吗?

public Iterator iteratorRowColumn () {
    return new iteratorRow;
}

最佳答案

我认为作业的最后一句很好地说明了一个问题。不知道哪一部分还不清楚,所以让我详细解释一下:

The array must implement the Iterable interface

public class Matrix<T> implements Iterable<T>

may be configured (using a Boolean)

public Matrix(boolean defaultRowColumnIterator) {
    this.defaultRowColumnIterator = defaultRowColumnIterator;
}

which of the two iterators it shall be returning by calling iterator() method

@Override
public Iterator<T> iterator() {
    return defaultRowColumnIterator ? iteratorRowColumn() : iteratorColumnRow();
}

这是一个可编译的示例:

public class Matrix<T> implements Iterable<T> {

    T[][] array;
    boolean defaultRowColumnIterator;

    public Matrix(boolean defaultRowColumnIterator) {
        this.defaultRowColumnIterator = defaultRowColumnIterator;
    }

    // other methods and constructors

    public Iterator<T> iteratorRowColumn() {
        return null; // your current implementation
    }

    public Iterator<T> iteratorColumnRow() {
        return null; // your current implementation
    }

    @Override
    public Iterator<T> iterator() {
        return defaultRowColumnIterator ? iteratorRowColumn() : iteratorColumnRow();
    }

}

关于java - Java 二维数组的迭代器和可迭代对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33757194/

相关文章:

java - 如何使用 @DataJpaTest 和 SpringFox @EnableSwagger2 在 Spring Boot 1.4 中进行切片测试

java - 迭代 java.lang.Iterable 的数组或实例 - 缺少常识解决方案?

c++ - 前/后插入器就位

c++ - 我的 C++ 列表迭代器是在改变位置,还是我做错了什么?

python 设置更新列表或设置(列表)

java - Iterable 接口(interface)是做什么用的?

java - 内存中的 SQLite 数据库

java.lang.IllegalStateException : When using WebSecurityConfigurerAdapter

java - 谷歌云存储md5检查文件

c++ - 声明一个通用迭代器