Iterator와 ListIterator
자바의 컬렉션 프레임워크에서 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() 메소드에 의해 반환된 가장 마지막 요소를 전달된 객체로 대체 (선택적 기능) |