В настоящее время я пытаюсь настроить пользовательский метод Iterator для двумерного массива.
например. если массив равен {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
, метод next()
должен возвращаться последовательно при каждом вызове 1, 2, 3, 4, 5, 6, 7, 8, 9.
Моя идея была примерно такой:
public Iterator<Type> iterator() {
return new Iterator<Type>() {
private int currentRow = 0;
private int currentColumn = 0;
public boolean hasNext() {
return currentRow < array.length;
}
public Type next() {
if(currentColumn + 1 == array[0].length){
currentColumn = 0;
currentRow ++;
}
return array[currentRow][currentColumn++];
}
}
}
Но он не выводит элементы в правильном порядке, а иногда даже возвращает ноль.