자바에서 iterater로 반복할 때 역순으로 할 순 없나요?


배열을 역순으로 탐색하고 싶을때 그냥 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)) {
   //...
}

어떻게 역순으로 반복해야할지 잘 모르겠습니다. 가르쳐주세요.

  • 2016년 02월 01일에 작성됨

조회수 515


1 답변


좋아요
1
싫어요
채택취소하기
ArrayList<...> a = new ArrayList<...>();

//리스트에 원소 추가 

ListIterator li = a.listIterator(a.size());

//마지막 부터 탐색시작.
while(li.hasPrevious()) {
  System.out.println(li.previous());
}

이런식으로 하시면 됩니다.

  • 2016년 02월 01일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close