개발/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