자바의 컬렉션 프레임워크에서 iterator 인터페이스는 컬렉션에 저장된 요소를 가져오는 방법 중 하나이다.

* Iterator

자바의 컬렉션 프레임워크에서 iterator 인터페이스는 컬렉션에 저장된 요소를 가져오는 방법 중 하나이다.

Iterator로 리스트 요소 출력하기

LinkedList<Integer> ll = new LinkedList<Integer>();

lnkList.add(4);
lnkList.add(2);
lnkList.add(3);
lnkList.add(1);
 
Iterator<Integer> it = ll.iterator();
while (it.hasNext()) {
    System.out.print(it.next() + " ");
}
메소드 의미
boolean hasNext() 다음 요소가 있으면 true, 없으면 false반환
E next() 다음 요소를 반환한다
default void remove() 요소를 삭제한다

리스트 요소를 변경하지 않고 값만 읽는다면 Enhanced For문을 사용하는 것이 좋다. 코드가 명확하고 버그를 예방할 수 있기 때문이다.

for(Integer i : ll)
    System.out.print(i + " ");

* ListIterator

ListIterator 인터페이스는 컬렉션 요소의 대체, 추가 그리고 인덱스 검색 등을 위한 작업에서 양방향으로 이동하는 것을 지원한다.

LinkedList<Integer> ll = new LinkedList<Integer>();

lnkList.add(4);
lnkList.add(2);
lnkList.add(3);
lnkList.add(1);

ListIterator<Integer> it = ll.listIterator();
while (it.hasPrevious()) {
    System.out.print(it.previous() + " ");
}
메소드 의미
void add(E e) 해당 리스트(list)에 전달된 요소를 추가함. (선택적 기능)
boolean hasNext() 다음 요소가 있으면 true, 없으면 false 반환
boolean hasPrevious() 리스트를 역방향으로 순회할 때 다음 요소를 가지고 있으면 true, 없으면 false를 반환
E next() 리스트의 다음 요소를 반환하고, 커서(cursor)의 위치를 순방향으로 이동시킴
int nextIndex() 다음 next() 메소드를 호출하면 반환될 요소의 인덱스를 반환
E previous() 리스트의 이전 요소를 반환하고, 커서(cursor)의 위치를 역방향으로 이동시킴
int previousIndex() 다음 previous() 메소드를 호출하면 반환될 요소의 인덱스를 반환
void remove() next()나 previous() 메소드에 의해 반환된 가장 마지막 요소를 리스트에서 제거(선택적 기능)
void set(E e) next()나 previous() 메소드에 의해 반환된 가장 마지막 요소를 전달된 객체로 대체 (선택적 기능)