728x90
- 컬렉션에 저장된 데이터를 접근할 때 사용되는 인터페이스
- Enumeration은 Iterator의 구버전
- ListIterator는 Iterator의 단반향적인 접근성을 양방향으로 향상시킨 인터페이스
- 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것
- Iterator를 가장 많이 사용함
메소드
hasNext()
읽어 올 요소가 남아있는지 확인
next()
다음 요소를 읽어 옴
remove()
next()로 읽어 온 요소를 삭제
forEachRemaining
컬렉션에 남아있는 요소들에 대해 지정된 작업을 수행하며 람다식을 사용하는 디폴트 메서드
Iterator
List list = new ArrayList();
Iterator it = list.iterator();
// 리스트를 모두 출력하는 경우
while(it.hasNext()) { // 리스트에 다음 요소가 없을 때까지 반복하여
Object obj = it.next(); // 0번째 인덱스부터 시작하여 다음 인덱스를 계속 obj 객체에 담고
System.out.println(obj); // 출력
}
// 만약 같은 코드를 계속 반복하면 이터레이터는 일회용이기 때문에
// 새로 만들어주지 않는 한 값을 다 읽었기 때문에 hasNext()의 값이 false임
while(it.hasNext()) { // 이 반복문은 실행되지만
Object obj = it.next();
System.out.println(obj);
}
while(it.hasNext()) { // 이 반복문은 실행되지 않음
Object obj = it.next();
System.out.println(obj);
}
Iterator의 장점
List와 Set은 같은 Collection 클래스를 조상으로 가지기 때문에 컬렉션을 바꿀 일이 생겨도
Iterator를 공유하기 때문에 작성해둔 코드를 바꿀 필요가 없음
Map과 Iterator
Map에는 Collection 클래스를 조상으로 가지지 않아서 Iterator가 없기 때문에
keySet, entrySet, values 메소드를 호출해서 Set이나 Collection 타입을 가져서 사용할 수 있음
Map map = new HashMap();
Iterator it = map.entrySet().iterator();
'Java > Notion' 카테고리의 다른 글
Comparator / Comparable (0) | 2023.04.30 |
---|---|
Arrays (0) | 2023.04.30 |
Stack / Queue (0) | 2023.04.30 |
List - LinkedList (0) | 2023.04.30 |
List - ArrayList (0) | 2023.04.30 |