자바의 Collection 프레임워크는 각 요소를 순회할 때 Iterable
인터페이스를 이용한다.
Iterable
인터페이스는 iterator()
를 통해 Iterator를 반환해준다.
Iterator
는 Collection 종류에 맞춰 각 요소를 순회하는 코드가 구현되어있다.Iterator
의 메소드
메소드명 | 리턴 타입 | 설명 |
---|---|---|
hasNext() | boolean | iterator가 컬렉션에서 다음 요소를 가지고 있다면 true, 없으면 false를 리턴한다. |
next() | E | iterator가 컬렉션의 다음 요소를 반환한다. |
remove() | void | iterator가 컬렉션에서 마지막으로 반환한 요소를 삭제한다. |
예제 코드
List<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
Iterator<String> iter = list.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
1
2
💡 Collection class and interface hierarchy
- 참고로 Map은 Collection이 아니다.
: 양방향 이동이 가능한 Iterator
listIterator()
메소드를 통해 사용할 수 있다.LinkedList<Integer> list = new LinkedList<>();
list.add(4);
list.add(3);
list.add(2);
list.add(1);
ListIterator<Integer> iter = list.listIterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " ");
}
while (iter.hasPrevious()) {
System.out.print(iter.previous() + " ");
}
4 3 2 1
1 2 3 4
Reference