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

2025. 5. 11. 15:55·개발/java
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

'개발 > java' 카테고리의 다른 글

단일 책임 원칙(SRP) 기본 개념  (1) 2025.06.14
Collections.max() 함수 설명  (0) 2025.05.12
HashMap의 자주 사용되는 함수  (0) 2025.05.11
lock.lock()과 lock.tryLock() 비교  (0) 2025.05.08
ReentrantLock 이란  (0) 2025.05.08
'개발/java' 카테고리의 다른 글
  • 단일 책임 원칙(SRP) 기본 개념
  • Collections.max() 함수 설명
  • HashMap의 자주 사용되는 함수
  • lock.lock()과 lock.tryLock() 비교
nix-be
nix-be
  • nix-be
    NiX
    nix-be
  • 전체
    오늘
    어제
    • 홈
      • 책
        • 오브젝트
      • 성장
        • jpa Querydsl 정리
        • 코딩테스트
      • 인프라
        • linux
        • vmware
        • CI&CD
        • 네트워크
        • docker
      • 개발
        • spring boot
        • JPA
        • java
        • thymeleaf
        • 이슈
        • jquery
        • javascript
        • 안드로이드
      • DB
        • postgreSql
      • 잡다한것
        • 프로그램
        • 일상 관련
      • 회사
        • 티
  • 블로그 메뉴

    • 홈
    • 개발
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
nix-be
스트림 API를 사용하여 HashMap을 반환하는 방법
상단으로

티스토리툴바