본 글은 공부를 위해 참고자료를 참고하여 작성한 글입니다.
Iterator는 자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화한 것이다.
컬렉션 프레임워크란 데이터를 저장하는 클래스들을 표준화한 설계이다.
컬렉션 프레임워크는 아래 그림과 같이 데이터를 저장하는 구조에 따라 3가지 인터페이스로 구성된다.
Set, List, Map은 어떤 데이터들의 집합체라고 볼 수 있다.
Set과 List는 데이터의 그룹(Collection)이다.
Map은 키(Key)와 값(Value)으로 이루어진 데이터의 집합이다.
Iterator는 이런 집합체로부터 정보를 얻어낸다고 볼 수 있다.
집합체를 다룰 때는 개별적인 클래스에 대해 데이터를 읽는 방법을 알아야 하기 때문에 각 컬렉션에 접근이 힘들어진다
🔑 Iterator 쓰게 되면 어떤 컬랙션이라도 동일한 방식으로 접근이 가능하여 그 안에 있는 항목들에 접근할 수 있는 방법을 제공한다.(다형성)
각각의 기능은 다음과 같다.
hasNext() : 읽어올 요소가 남아있는지 확인하는 메소드이다. 요소가 있으면 true, 없으면 false
next() : 다음 데이터를 반환한다.
remove() : next()로 읽어온 요소를 삭제한다.
메소드 호출 순서는 hasNext() -> next() -> remove()이다.
import java.util.ArrayList;
import java.util.Iterator;
public class Practice {
public static void main(String[] args) {
System.out.println("List 생성");
ArrayList list = new ArrayList();
list.add("일");
list.add("월");
list.add("수");
Iterator iter = list.iterator();
while (iter.hasNext() == true) {
String day = (String) iter.next();
if (day == "수") {
iter.remove();
}
System.out.println("Day : " + day);
}
System.out.println("-------------------");
iter = list.iterator();
while(iter.hasNext() == true) {
String day = (String)iter.next();
System.out.println("Day : " + day);
}
}
}