자바에서 iterater로 반복할 때 역순으로 할 순 없나요?
조회수 4872회
배열을 역순으로 탐색하고 싶을때 그냥 for문으로 돌릴때는
for (int i = nodes.size() - 1; i >= 0; i--) {
final Node each = (Node) nodes.get(i);
...
}
이런식으로 하면되는데
class ListReverser<T> implements Iterable<T> {
private ListIterator<T> listIterator;
public ListReverser(List<T> wrappedList) {
this.listIterator = wrappedList.listIterator(wrappedList.size());
}
public Iterator<T> iterator() {
return new Iterator<T>() {
public boolean hasNext() {
return listIterator.hasPrevious();
}
public T next() {
return listIterator.previous();
}
public void remove() {
listIterator.remove();
}
};
}
}
이런 코드에서는 for each같은 구문으로 돌릴때
for (final Node each : new ListReverser<Node>(nodes)) {
//...
}
어떻게 역순으로 반복해야할지 잘 모르겠습니다. 가르쳐주세요.
댓글 입력