
keySet()과 entrySet() 사용 목적 및 차이점둘 다 Map의 데이터를 반복(iterate)할 때 사용하지만, 사용 목적과 성능 차이가 있음.
keySet()을 사용한 반복문for (Integer key : map.keySet()) {
String value = map.get(key);
System.out.println(key + "=" + value);
}
map.keySet()은 모든 키(key)만 모은 Set을 반환 → map.get(key)를 이용해 값(value) 조회map.get(key)를 반복 호출하기 때문에 성능 저하 가능 (특히 TreeMap, LinkedHashMap 같은 구조에서는 느려질 수 있음)if (map.containsKey(50)) 같은 로직) map.get(50) 등)entrySet()을 사용한 반복문for (Entry<Integer, String> entry : map.entrySet()) {
int key = entry.getKey();
String value = entry.getValue();
System.out.println(key + "=" + value);
}
map.entrySet()은 키-값 쌍(Entry) 전체를 Set 형태로 반환 entry.getValue()를 직접 사용하여 map.get(key) 호출이 필요 없음 → 성능 더 좋음| 사용 방식 | 키만 필요할 때 | 키-값 둘 다 필요할 때 |
|---|---|---|
keySet() | ✅ 적합 | ⚠️ 비효율적 (get() 반복 호출) |
entrySet() | ❌ 불필요 | ✅ 성능 우수 |
📌 즉, entrySet()이 성능상 더 유리하므로, 키와 값을 모두 사용해야 한다면 entrySet()을 쓰는 것이 좋음!
단, 키만 필요하면 keySet()을 사용하여 불필요한 연산을 줄이는 것이 좋음.

HashMap<Integer, String> 생성
map.put(40, "히정") → 키 중복 시 새 값으로 덮어씀 (40="리링"으로 변경됨)출력 및 크기 확인
System.out.println(map); → {10=효정, 20=핑핑, 30=퐁퐁, 40=리링, 50=나나, 70=쑝쑝, 90=미미}System.out.println(map.size()); → 7 (키 중복 제외)keySet()을 사용한 반복문
map.get(key)로 값 출력entrySet()을 사용한 반복문
Entry<Integer, String> 이용해 entry.getKey(), entry.getValue()로 출력결과
key=value 형식으로 HashMap 출력 entrySet() 방식이 성능상 유리 (값 조회 최소화)main 실행 시 MapExam 생성자 호출
MapExam 생성, 모든 코드 실행됨package ex0305.map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class MapExam {
Map<Integer, String> map = new HashMap<>();
public MapExam() { //생성자 만들었당
map.put(40,"히정");
map.put(10,"효정");
map.put(70,"쑝쑝");
String v = map.put(40,"리링"); //키중복
System.out.println(v);
map.put(20,"핑핑");
map.put(30,"퐁퐁");
map.put(50,"나나");
map.put(90,"미미");
//출력
System.out.println(map);
System.out.println(map.size());
//map.keySet(); //키는 중복안뎀
Set<Integer> keySet = map.keySet(); //set keyset(자료구조) map
Iterator<Integer> it = keySet.iterator(); //반복자
//while(it.hasNext()) {
// int key = it.next(); //요소꺼내기
// String value = map.get(key);
// System.out.println(key+"="+value);
//}
//개선된포문
for(Integer key : map.keySet()) {
String value = map.get(key);
System.out.println(key+"="+value);
}
System.out.println("Map.Entry<K,V>-------------------------");
//중요
Set<Entry<Integer, String>> set = map.entrySet(); //---------------------
for(Entry<Integer,String> entry : set) {
int key = entry.getKey();
String s = entry.getValue();
System.out.println(key+"="+s);
}
}
public static void main(String[] args) {
new MapExam();
}
}