在Java中实现多维数组的自定义迭代器可以通过以下步骤:
Iterator
接口,并指定泛型为多维数组的元素类型。例如,CustomIterator<T>
。private T[][] array;
和private int row;
、private int col;
。public CustomIterator(T[][] array) { this.array = array; row = 0; col = 0; }
。Iterator
接口中的方法:boolean hasNext()
:判断是否还有下一个元素。当当前迭代位置小于多维数组的总长度时,返回true
,否则返回false
。T next()
:返回下一个元素,并将迭代位置移动到下一个位置。例如,使用array[row][col++]
获取当前元素,并根据需要更新row
和col
的值。void remove()
:可选择性地实现,根据需要进行操作。public Iterator<T> iterator() { return new CustomIterator<>(array); }
。下面是一个示例代码:
import java.util.Iterator;
public class MultiDimensionalArray<T> implements Iterable<T> {
private T[][] array;
public MultiDimensionalArray(T[][] array) {
this.array = array;
}
public Iterator<T> iterator() {
return new CustomIterator<>(array);
}
private class CustomIterator<T> implements Iterator<T> {
private T[][] array;
private int row;
private int col;
public CustomIterator(T[][] array) {
this.array = array;
row = 0;
col = 0;
}
public boolean hasNext() {
return row < array.length && col < array[row].length;
}
public T next() {
T element = array[row][col++];
if (col >= array[row].length) {
row++;
col = 0;
}
return element;
}
public void remove() {
// 可选择性地实现
}
}
}
使用示例:
public class Main {
public static void main(String[] args) {
Integer[][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
MultiDimensionalArray<Integer> multiArray = new MultiDimensionalArray<>(array);
Iterator<Integer> iterator = multiArray.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
这样,就可以在Java中实现多维数组的自定义迭代器了。
领取专属 10元无门槛券
手把手带您无忧上云