[英]Iterator and iterable for an 2D array Java
我为数组创建了两个迭代器:第一个迭代器按行(iteratorRow)然后按列运行数组,第二个按列然后按行(iteratorColumn)运行数组。
我还有另一个类Matrix,我必须在其中创建两个用于执行迭代的方法(iteratorRowColumn和iteratorColumnRow),这些方法返回已创建为可供其他类访问的迭代器。
该数组必须实现Iterable接口,并且可以配置(使用布尔值)通过调用iterator()方法退还的两个迭代器中的哪个。
我怎样才能做到这一点? 我必须做一些吸气剂方法吗? 像这样吗
public Iterator iteratorRowColumn () {
return new iteratorRow;
}
我认为作业的最后一句话很好地解释了一个问题。 我不确定它的哪一部分不清楚,所以让我详细解释一下:
数组必须实现Iterable接口
public class Matrix<T> implements Iterable<T>
可以配置(使用布尔值)
public Matrix(boolean defaultRowColumnIterator) {
this.defaultRowColumnIterator = defaultRowColumnIterator;
}
通过调用iterator()方法返回两个迭代器中的哪个
@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();
}
}
像这样:
public class Proba {
Integer[][] array = new Integer[10][10];
public class MyIter implements Iterator<Integer> {
private Integer[] integers;
private int index = 0;;
public MyIter(Integer[] integers) {
this.integers = integers;
}
@Override
public boolean hasNext() {
return index < integers.length -1 ;
}
@Override
public Integer next() {
return integers[index];
}
@Override
public void remove() {
//TODO: remove
}
}
public static void main(String[] args) {
Iterator<Integer> iter = new Proba().getIterator(1);
while (iter.hasNext()) {
System.out.println(iter.next());
}
}
public Iterator<Integer> getIterator(int row) {
return new MyIter(array[row]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.