728x90
Iterator(반복자)
컬렉션에 저장된 요소들을 순차적으로 읽어오는 역할을 한다.
이러한 컬렉션 순회 기능은 Iterator 인터페이스에 정의되어져 있으며,
컬렉션 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 메서드 iterator()가 정의되어있다.
따라서, iterator()를 호출하면, Iterator타입의 인스턴스가 반환된다.
그러므로 Collection 인터페이스를 상속받는 List와 Set 인터페이스를 구현한 클래스들은iterator() 메서드를 사용할 수 있다.
iterator()를 통해 만들어진 메서드는 다음과 같다.
메서드 | 설명 |
hasNext() | 읽어올 객체가 남아 있으면 true를 리턴하고, 없으면 false를 리턴한다. |
next() | 컬렉션에서 하나의 객체를 읽어온다. 이 때, next()를 호출하기 전에 hasNext()를 통해 읽어올 다음 요소가 있는지 먼저 확인해야 한다. |
remove() | next()를 통해 읽어온 객체를 삭제한다. next()를 호출한 다음에 remove()를 호출해야 한다. |
List에서 String 객체를 하나씩 가져오는 예시를 통해 알아보자
ArrayList<String> list = ...;
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) { // 읽어올 다음 객체가 있다면
String str = iterator.next(); // next()를 통해 다음 객체를 읽어온다.
...
}
제거는 다음과 같다.
ArrayList<String> list = ...;
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){ // 다음 객체가 있다면
String str = iterator.next(); // 객체를 읽어오고,
if(str.equals("str과 같은 단어")){ // 조건에 부합한다면
iterator.remove(); // 해당 객체를 컬렉션에서 제거한다.
}
}
'CS > Data Structure' 카테고리의 다른 글
[ 자료구조 ] 맵(Map)이란 무엇일까? (0) | 2022.09.13 |
---|---|
[ 자료구조 ] 셋(Set)이란 무엇일까? (0) | 2022.09.13 |
[ 자료구조 ] 리스트 (List)란 무엇일까? (0) | 2022.09.13 |
[ 자료구조 ] 컬렉션 프레임워크(Collection Framework)란 무엇일까? (0) | 2022.09.13 |
[ 자료구조 ] 배열(Array) (0) | 2022.09.01 |