Java

[Java] Map.Entry<K, V> / Map의 key, value 접근법

bornsoon 2025. 5. 1. 17:46

 

entry (엔트리)
: Map의 키(Key)와 값(value)의 쌍 하나하나를 말한다.
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);

// 내부적으로는 다음과 같은 entry로 저장된다.
// Entry: "apple" = 1

 

 

entrySet()
: map.entrySet()은 Map의 모든 엔틀들을 Set으로 반환하는 메소드이다.
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue());
    
    // entry.getKey() -> key값
    // entry.getValue() -> value 값
}

 

 

keySet()
for (String key : map.keySet()) {
    System.out.println("Key = " + key);
}

 

 

values()
for (Integer value : map.values()) {
    System.out.println("Value = " + value);
}

 

 

Map.forEach() + 람다식
map.forEach((key, value) -> {
    System.out.println("Key = " + key + ", Value = " + value);
})

 

 


스트림 방식
// 1. Map을 entrySet().stream() 으로 반복 처리
map.entrySet().stream()
    .forEach(entry -> System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()));


// 2. 특정 조건으로 필터링 (예: 값이 2 이상인 항목만)
map.entrySet().stream()
    .filter(entry -> entry.getValue() >= 2)
    .forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()));


// 3. 정렬하기 (키 또는 값 기준)
// 키 기준
map.entrySet().stream()
    .sorted(Map.Entry.comparingByKey())
    .forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()));
// 값 기준
map.entrySet().stream()
    .sorted(Map.Entry.comparingByValue())
    .forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()));


// 4. 값만 추출해서 리스트로 만들기
map.entrySet().stream()
    .sorted(Map.Entry.comparingByValue())
    .forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()));



// 5. Map을 필터링해서 새 Map 만들기
Map<String, Integer> filteredMap = map.entrySet().stream()
    .filter(entry -> entry.getValue() >= 2)
    .collect(Collectors.toMap(
        Map.Entry::getKey,
        Map.Entry::getValue
    ));

 

작업 방법
기본 반복 map.entrySet().stream()
필터링 .filter(entry -> 조건)
정렬 .sorted(comparingByKey / Value)
새 Map 만들기 .collect(Collectors.toMap())
728x90