Programming/자바(Java)

11-22 Iterator, ListIterator, Enumeration

먹보 개발자 2024. 10. 14. 01:22

- 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스

- Enumeration은 Iterator의 구버전

- ListIterator는 Iterator의 접근성을 향상시킨 것 (단방향 -> 양방향) *잘 안씀

 

메서드 설 명
boolean hasNext() ★★ 읽어 올 요소가 남아있는지 확인한다. 있으면 true. 없으면 false를 반환한다.
Object next() ★★ 다음 요소를 읽어 온다. next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다.
void remove() next()로 읽어 온 요소를 삭제한다. next()를 호출한 다음에 remove()를 호출해야한다.(선택적 기능)
void forEachRemaining(Consumer<? super E> action) 컬렉션에 남아있는 요소들에 대해 지정된 작업(action)을 수행한다. 람다식을 사용하는 디폴트 메서드.(JDK1.8부터 추가)

↑ Iterator 인터페이스의 메서드

 

메서드 설 명
boolean hasMoreElements()  읽어 올 요소가 남아있는지 확인한다. 있으면 true. 없으면 false를 반환한다.
Iterator의 hasNext()와 같다.
Object nextElement()  다음 요소를 읽어 온다. next()를 호출하기 전에 hasMoreElements()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다. Iterator의 next()와 같다.

↑ Enumeration인터페이스의 메서드

 

Iterator

- 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것.

- 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용

 

List list = new ArrayList(); // 다른 컬렉션으로 변경할 때는 이 부분만 고치면 된다.

Iterator it = list.iterator();

 

while(it.hasNext()) { // boolean hasNext() 읽어올 요소가 있는지 확인

        System.out.println(it.next()); // Object next() 다음 요소를 읽어옴.

}

 

*iterator를 써서 다 읽고 나면 다시 iterator를 생성해서 읽어야한다. 즉 일회용이다.

 

Map과 Iterator

- Map에는 iterator()가 없다. keySet(), entrySet(), values()를 호출해야함.

'Programming > 자바(Java)' 카테고리의 다른 글

11-30 Comparator와 Comparable  (0) 2024.10.14
11-25 Arrays  (0) 2024.10.14
11- 15 Stack & Queue  (1) 2024.10.14
11-12 LinkedList / ArrayList, LinkedList 비교  (1) 2024.10.13
11-7 ArrayList  (0) 2024.10.11