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());
}