Как инициализировать пользовательский итератор?

#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);