#java #iterator
#java #итератор
Вопрос:
Программа, которую я пытаюсь создать, состоит из создания класса с именем Matrix
, который повторяется с помощью двух пользовательских итераторов, rowColumIterator
и columRowIterator
. Проблема в том, что при инициализации итератора в Matrix
классе возникает следующая ошибка:
Не удается разрешить метод ‘iterator ()’
Я не знаю, проблема в том, как я создаю итератор или внутри класса Matrix.
Код итератора:
public class rowColumnIterator<T> implements Iterator<T> {
private T[][] dataset;
private int rowIndex;
private int columnIndex;
public rowColumnIterator(T[][] dataset) {
this.dataset = dataset;
}
@Override
public boolean hasNext() {
if (rowIndex >= dataset.length)
return false;
if (columnIndex >= dataset[rowIndex].length amp;amp;
(rowIndex >= dataset.length || rowIndex == dataset.length - 1))
return false;
return true;
}
@Override
public T next() {
if (!hasNext())
throw new NoSuchElementException();
if (columnIndex >= dataset[rowIndex].length) {
rowIndex ;
columnIndex = 0;
}
return dataset[rowIndex][columnIndex ];
}
@Override
public void remove() {
throw new UnsupportedOperationException("Not yet implemented");
}
}
Внутри класса matrix у меня есть это внутри конструктора:
this.matrix = new int[rows][columns];
rowColumnIterator<Integer> iterator = this.matrix.iterator();
Я был бы признателен, если бы вы могли рассказать мне, что я делаю неправильно.
Ответ №1:
Вы должны создать экземпляр итератора с его конструктором:
rowColumnIterator<Integer> iterator = new rowColumnIterator<>(this.matrix);