ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] Streams를 이용한 Map Collection 사용 방법
    자바/자바8 2021. 1. 20. 12:55

    이번 시간에는 Streams을 통해서 Map을 제어하는 방법에 대해서 알아보도록 하겠습니다.

     

    map 생성  (key는 책이름, value는 재고개수)

    Map<String, Integer> books = new HashMap<>();

    key-value pairs의 set을 구하는 방법

    Set<Map.Entry<String, Integer>> entries = books.entrySet();

    map의 key set을 구하는 방법

    Set<String> keySet = books.keySet();

    map의 value collection을 구하는 방법

    Collection<Integer> values = books.values();

    위의 collection들은 Streams을 이용하여 Map을 처리할 수 있는 진입점을 아래와 같이 제공해줍니다.

    Stream<Map.Entry<String, Integer>> entriesStream = entries.stream();
    Stream<Integer> valuesStream = values.stream();
    String<String> keysStream = keySet.stream();

     

    테스트를 위해서 위에 생성한 books에 데이터를 입력합니다.

    books.put("JSP 프로그래밍", 50);
    books.put("자바 프로그래밍", 100);
    books.put("Javascript 프로그래밍", 0);

    우선 Stream을 통해서 재고 개수가 0인 책을 찾아보도록 하겠습니다.

    Optional<String> optBooks = books.entrySet().stream()
    	.filter(e -> e.value() == 0)
        .map(Map.Entry::getKey)
        .findFirst();
    
    assertEquals("Javascript 프로그래밍", optBooks.get());

    반대로 map의 key값을 통해서 value를 추출해보도록 하겠습니다.

    Optional<Integer> stock = books.entrySet().stream()
    	.filter(e -> e.getKey().startsWith("JSP"))
        .map(Map.Entry::getValue)
        .findFirst();
    assertEquals(50, stock.get());

    댓글

Designed by Tistory.