-
[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());
'자바 > 자바8' 카테고리의 다른 글
[Stream] int 숫자 배열을 filter를 통해서 내림차순으로 정렬하기 (0) 2021.04.22 [JAVA] JAVA8 스트림 Max&Min 사용 방법 (1) 2020.09.17