자바의정석 3rd Edition 2권을 참조하였습니다.
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=76083001
컬렉션 프레임워크에서는 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화하였다.
컬렉션에 저장된 각 요소에 접근하는 기능을 가진 iterator인터페이스를 정의하고, Collection 인터페이스에는
'Iterator(Iterator를 구현한 클래스의 인스턴스)'를 반환하는 iterator()를 정의하고 있다.
public interface Iterator() {
boolean hasNext();
Object next();
viod remove();
}
public interface Collection {
...
public Iterator iterator();
...
}
Iterator는 Collection 인터페이스에 정의된 메서드이므로 Collection 인터페이스의 자손인 List와 Set에도 포함되어 있다.
그래서 List나 Set 인터페이스를 구현하는 컬렉션은 iterator()가 각 컬렉션의 특징에 알맞게 작성되어 있다. 컬렉션 클래스에 대해 iterator()를 호출하여 Iterator를 얻은 다음 반복문, 주로 while문을 사용해서 컬렉션 클래스의 요소를 읽어 올 수 있다.
메서드 | 설 명 |
boolean hasNext() | 읽어 올 요소가 남아있는지 화인, 있으면 true 없으면 false |
Object next() | 다음 요소를 읽어온다. next() 호출하기 전에 hasNext()를 호출해서 읽어올 요소가 있는지 확인하는 것이 안전 |
void remove() | next()로 읽어 온 요소를 삭제한다. next()를 호출한 다음에 remove()를 호출해야 한다. (선택적 기능) |
Collection의 Iterator 사용방법
Collection c = new ArrayList(); // 다른 컬렉션으로 변경시 이 부분만 고치면 된다.
Iterator it = c.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
Map인터페이스의 Iterator 사용 방법
Map map = new HashMap();
Iterator it = map.entrySet().iterator();
// map.entrySet으로 set instance
// map.entrySet을 통해 얻은 Set instance의 iterator()를 호출해서 Iterator instance를 얻음
// Iterator 인스턴스의 참조가 it에 저장됨
package kr.co.dong.datastructure;
import java.util.*;
public class IteratorEx {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
Iterator it = list.iterator();
while(it.hasNext()) {
Object obj = it.next();
System.out.println(obj);
}
}
}
'Computer Science > DataStructure' 카테고리의 다른 글
Iterator with Vector (0) | 2022.11.14 |
---|---|
ListIterator와 Enumeration (0) | 2022.11.14 |
Array (0) | 2021.06.09 |
Implement Linked List (0) | 2021.04.26 |
Linked List (연결 리스트) (0) | 2021.03.07 |