본문 바로가기
학원 정리/자바

Iterator<E>

by csatlemin 2022. 10. 22.

 Iterator<E>
   - 인터페이스다.
   - 콜렉션에 대한 반복작업을 수행하는 객체들이 구현할 사양이 정의되어 있다.
   - 향상된-for문이 제공되기 전까지 콜렉션에 저장된 객체들을 반복처리할 때 Iterator<E> 구현객체를 사용했다.
   - 주요 메소드
    boolean hasNext()
     반복처리할 객체가 남아있으면 true를 반환한다.
    E next()
     객체를 꺼낸다.
    void remove()
     이번 반복작업에서 다룬 객체를 삭제한다.
  - Iterator<E> 인터페이스의 구현객체를 획득하는 방법
    Collection<E> 인터페이스를 구현한 모든 자료구조 구현객체는 Iterator<E> 구현객체를 제공하는 메소드가 있다.
    모든 자료구조 구현 클래스는 Iterator<E>를 반환하는 iterator()메소드를 구현하고 있다.
 
ex)
Set<String> names = new HashSet<>();
names.add("김유신");
names.add("강감찬");
names.add("류관순");
names.add("이순신");
names.add("윤봉길");

### 향상된 for문을 사용해서 콜렉션 객체에 저장된 객체들을 반복처리하기
for (String name : names) {
   // if (name.equals("김유신")) {
   //   names.remove("김유신"); // 향상된 for문 내부에서는 콜렉션에 저장된 객체를 절대로 삭제할 수 없다. -> Iterator사용
   // }
}  // 향상된 for문이 더 간단하다. -> Iterator를 사용해야되는 경우를 제외하고 향상된 for문 사용하기

### Iterator를 사용해서 콜렉션 객체에 저장된 객체들을 반복처리하기
// Iterator<E> 객체를 획득해서 반복작업 수행하기
Iterator<String> itr = names.iterator();
while (itr.hasNext()) {
     String name = itr.next();

      // 콜렉션의 객체들을 반복처리하면서 특정 객체를 삭제할 수 있다.
      if (name.equals("김유신")) {
          itr.remove(); 
      }
}

'학원 정리 > 자바' 카테고리의 다른 글

예외(Exception)  (0) 2022.10.26
Map<K,V> 인터페이스  (0) 2022.10.24
ArrayList<E>와 Vector<E>의 주요 메소드  (0) 2022.10.21
List<E>  (0) 2022.10.20
Set<E>  (0) 2022.10.19

댓글