Поиск информации об итераторе, я нашел только примеры, показывающие, как перебирать коллекцию и не возвращать Итератор, как я хочу.Возврат итератора
Я практикуюсь на экзамене, поэтому я пробую некоторые упражнения по программированию, чтобы подготовиться, и это касается шаблона итератора. Я хочу реализовать getKnightPositionIterator
,. Вы можете увидеть код ниже. Этот код не мой, я нашел это.
package iterator;
import java.util.*;
public class Position {
/** return an iterator that will return all positions
* that a knight may reach from a given starting position.
*/
public static Iterator<Position> getKnightPositionIterator(Position p) {
return null;
}
/** create a position.
* @param r the row
* @param c the column
*/
public Position(int r, int c) {
this.r = r; this.c = c;
}
protected int r;
protected int c;
/** get the row represented by this position.
* @return the row.
*/
public int getRow() { return r; }
/** get the column represented by this position.
* @return the column.
*/
public int getColumn() { return c; }
public boolean equals(Object o) {
if (o.getClass() != Position.class) { return false; }
Position other = (Position) o;
return r==other.r && c==other.c;
}
public int hashCode() {
// works ok for positions up to columns == 479
return 479*r+c;
}
public String toString() {
return "["+r+","+c+"]";
}
}
Как всегда, я полагаю, что я должен создать итератор, чтобы вернуться, так, до сих пор, это мой attemp.
public static Iterator<Position> getKnightPositionIterator(Position p) {
Iterator<Position> knightPosIter = Position.getKnightPositionIterator(p);
for(Iterator<Position> positions = knightPosIter; positions.hasNext();) {
//What should I write here?
}
return knightPosIter;
}
'Position currentPosition = position.next()'? –
Будет ли это смотреть не только на следующую позицию? Разве мне не нужно сохранять все позиции таким образом, чтобы их можно было вернуть с помощью Итератора? Сохраняет ли итератор все позиции, с которыми он сталкивается? – user1960836
[Итераторы] (http://docs.oracle.com/javase/tutorial/collections/interfaces/collection.html#Iterator) используются для удаления/проверки элементов коллекции, а не «отслеживания элементов». –