개발/java

스트림 API를 사용하여 HashMap을 반환하는 방법

nix-be 2025. 5. 11. 15:55
728x90

 

✅ 1. 키만 추출해서 List로 반환

Map<String, Integer> myMap = new HashMap<>();
myMap.put("apple", 3);
myMap.put("banana", 5);
myMap.put("cherry", 7);

// 키만 추출하여 리스트로 변환
List<String> keyList = myMap.entrySet()
                            .stream()
                            .map(Map.Entry::getKey)
                            .collect(Collectors.toList());

System.out.println("Key List: " + keyList);
// 출력: Key List: [apple, banana, cherry]

✅ 2. 값만 추출해서 List로 반환

List<Integer> valueList = myMap.entrySet()
                               .stream()
                               .map(Map.Entry::getValue)
                               .collect(Collectors.toList());

System.out.println("Value List: " + valueList);
// 출력: Value List: [3, 5, 7]

map.values().stream() 으로도 가능합니다.


✅ 3. 조건에 맞는 항목만 추려서 새로운 HashMap 반환

// 값이 5보다 큰 항목만 새 HashMap으로 추출
Map<String, Integer> filteredMap = myMap.entrySet()
                                        .stream()
                                        .filter(entry -> entry.getValue() > 5)
                                        .collect(Collectors.toMap(
                                            Map.Entry::getKey,
                                            Map.Entry::getValue
                                        ));

System.out.println("Filtered Map: " + filteredMap);
// 출력: Filtered Map: {cherry=7}

✅ 4. entrySet()을 그대로 Stream으로 사용

// Entry 스트림 자체를 사용할 수 있음
myMap.entrySet()
     .stream()
     .forEach(entry -> System.out.println(entry.getKey() + " → " + entry.getValue()));

// 출력:
// apple → 3
// banana → 5
// cherry → 7

✅ 5. 키와 값을 변형하여 새로운 HashMap 반환 (변환 map)

// 키는 대문자로, 값은 두 배로 변환해서 새 맵으로 만들기
Map<String, Integer> modifiedMap = myMap.entrySet()
                                        .stream()
                                        .collect(Collectors.toMap(
                                            entry -> entry.getKey().toUpperCase(), // 키 변환
                                            entry -> entry.getValue() * 2          // 값 변환
                                        ));

System.out.println("Modified Map: " + modifiedMap);
// 출력: Modified Map: {APPLE=6, BANANA=10, CHERRY=14}

✅ 6. 특정 항목만 키 또는 값으로 변형 후 리스트 만들기

예: 60점 미만 학생 이름만 리스트로 추출

Map<String, Integer> scores = new HashMap<>();
scores.put("A", 90); scores.put("B", 55); scores.put("C", 30);

List<String> failedStudents = scores.entrySet()
                                    .stream()
                                    .filter(entry -> entry.getValue() < 60)
                                    .map(Map.Entry::getKey)
                                    .collect(Collectors.toList());

System.out.println("60점 미만 학생: " + failedStudents);
// 출력: 60점 미만 학생: [B, C]

📌 요약 표

목적 사용법 요약

키만 리스트로 추출 map(Map.Entry::getKey)
값만 리스트로 추출 map(Map.Entry::getValue)
조건에 맞는 새 HashMap 생성 filter() → collect(Collectors.toMap())
스트림으로 바로 Entry 처리 entrySet().stream()
키/값 변형한 새 HashMap 만들기 collect(Collectors.toMap(k→..., v→...))

 

728x90