iterator)를 사용하여 컨테이너의 요소들에 접근하는 디자인 패턴. 각기 다른 자료구조들을 똑같은 인터페이스로 순회를 쉽게 할 수 있다는 장점이 있다. 컨테이너란 동일한 요소들을 담아놓는 집합을 말하며 배열, 맵 등이 있다.const mp = new Map();
mp.set("a,1");
mp.set("b,2");
mp.set("cccc,3");
const st = new Set();
st.add(1);
st.add(2);
st.add(3);
const a = [];
for (let i = 0; i < 10; i++) a.push(i);
for (let aa of a) console.log(aa);
for (let a of mp) console.log(a);
for (let a of st) console.log(a);
자바의 Map에서 Iterator를 사용하는 방법을 보자.
Map 인터페이스는 키와 값을 쌍으로 구성된 데이터 구조를 제공한다. 하지만 Map자체에는 Iterator 인터페이스가 직접 정의되어 있지 않다. 대신 Map의 entrySet(), keySet(), values() 메서드를 통해 Set 또는 Collection을 얻은 후, 이를 통해 Iterator를 사용할 수 있다.
Iterator사용하기Set을 얻고, 이 Set에 대한 Iterator를 생성 Map<String, Integer> map = new HashMap<>();
 map.put("Apple", 1);
 map.put("Banana", 2);
 map.put("Cherry", 3);
// 키에 대한 Iterator 사용
Iterator<String> keyIterator = map.keySet().iterator();
System.out.println("Keys:");
while (keyIterator.hasNext()) {
	String key = keyIterator.next();
    System.out.println(key);
}
Iterator 사용하기Collection을 얻고, 이 Collection에 대한 Iterator를 생성Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Cherry", 3);
        
// 값에 대한 Iterator 사용
Iterator<Integer> valueIterator = map.values().iterator();
System.out.println("\nValues:");
while (valueIterator.hasNext()) {
	Integer value = valueIterator.next();
    System.out.println(value);
}
Iterator 사용하기Set을 얻고, 이 Set에 대한 Iterator를 생성Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Cherry", 3);
        
// 키-값 쌍에 대한 Iterator 사용
Iterator<Map.Entry<String, Integer>> entryIterator = map.entrySet().iterator();
System.out.println("\nEntries:");
while (entryIterator.hasNext()) {
	Map.Entry<String, Integer> entry = entryIterator.next();
    System.out.println(entry.getKey() + ": " + entry.getValue());
}