-
학원 DAY 22. Iterator<E> 인터페이스기록 2022. 10. 6. 00:26
package day23.collection.Iterator; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class SetApp1 { public static void main(String[] args) { /* * Iterator<E> * - 인터페이스다. * - 콜렉션에 대한 반복작업을 수행하는 객체들이 구현할 기능이 정의되어 있다. * - 향상된 for문이 제공되기 전까지 콜렉션에 저장된 객체들을 반복처리할 때 Iterator<E>구현객체를 사용했다. * - 주요 메소드 * boolean hasNext() * - 반복처리할 객체가 남아있으면 true를 반환한다. * E next() * - 객체를 꺼낸다. * void remove() * - 이번 반복작업에서 다루고 객체를 삭제한다. * * - Iterator<E> 인터페이스의 구현객체를 획득하는 방법 * Collection<E> 인터페이스를 구현한 모든 자료구조 구현객체는 Iterator<E> 구현객체를 제공하는 메소드가 있다. * 모든 자료구조 구현 클래스는 Iterator<E>를 반환하는 iterator()메소드를 구현하고 있다. * */ Set<String> names = new HashSet<>(); names.add("김유신"); names.add("강감찬"); names.add("이순신"); names.add("류관순"); names.add("윤봉길"); System.out.println("### 향상된 for문을 사용해서 콜렉션 객체에 저장된 객체들을 반복처리하기"); // 향상된 for문을 사용해서 반복작업 수행하기 for (String name : names) { System.out.println(name); // 향상된 for문 내부에서는 콜렉션에 저장된 객체를 절대로 삭제할 수 없다. // if (name.equals("김유신")) { // names.remove("김유신"); // } } System.out.println("### Iterator를 사용해서 콜렉션 객체에 저장된 객체들을 반복처리하기"); // Iterator<E> 객체를 획득해서 반복작업 수행하기 Iterator<String> itr = names.iterator(); while (itr.hasNext()) { String name = itr.next(); System.out.println(name); // 콜렉션의 객체들을 반복처리하면서 특정 객체를 삭제할 수 있다. if (name.equals("김유신")) { itr.remove(); } } System.out.println(names); } }
- Iterator<E>
- 인터페이스다.
- 콜렉션에 대한 반복작업을 수행하는 객체들이 구현할 기능이 정의되어 있다.
- 향상된 for문이 제공되기 전까지 콜렉션에 저장된 객체들을 반복처리할 때 Iterator<E>구현객체를 사용했다.
- Iterator<E> 인터페이스의 구현객체를 획득하는 방법
Collection<E> 인터페이스를 구현한 모든 자료구조 구현객체는 Iterator<E> 구현객체를 제공하는 메소드가 있다.
* 모든 자료구조 구현 클래스는 Iterator<E>를 반환하는 iterator()메소드를 구현하고 있다.
- 주요 메소드
- boolean hasNext()
반복할 요소가 남아있으면 true를 반환한다.
-
- E next()
현재 반복대상이 되는 요소를 꺼낸다.
-
- void remove()
현재 반복대상이 되는 요소를 삭제한다
-
- 사용예제
ArrayList<String> list = new ArrayList<>();
list.add("김유신"); list.add("강감찬"); list.add("류관순");
// 향상된 for문으로 ArrayList에 저장된 요소를 반복해서 조회하기
for (String name : names) {
System.out.println(name); }
// Iterator의 구현객체를 이용해서 ArrayList에 저장된 요소를 반복해서 조회하기
Iterator<String> it = list.iterator();
while (it.hasNext()) { String name = it.next();
System.out.println(name); }
결론
- Collection를 구현한 자료구조 구현클래스들은 자신의 자료구조에 저장된 각 요소를 순회하는 자신만의 Iterator구현객체를 제공한다.
- 각 자료구조 구현클래스들의 Iterator 구현내용은 다를 수 있지만, 사용방법은 동일한 구현Iterator객체를 제공한다.
- 자료구조객체에 저장된 데이터를 순회하면서 현재 반복대상이 되는 객체를 삭제해야하는 경우에는 반드시 Iterator를 사용해야 한다.
- 향상된 for문의 내부에서는 자료구조객체에 저장된 객체를 삭제할 수 없다.
'기록' 카테고리의 다른 글
학원 DAY24. 예외 처리 (0) 2022.10.08 학원 DAY23. 매개변수의 결정, 콜렉션과 맵 (0) 2022.10.06 학원 DAY 21. Collection 컬렉션 (0) 2022.10.05 학원 DAY 21. 제네릭(Generic), comparable인터페이스 (0) 2022.10.04 학원 DAY20. Date, Calendar, Format, Math 클래스 (0) 2022.10.04 - Iterator<E>