我为一个数组创建了两个迭代器:第一个迭代器按行运行数组 (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/