본문 바로가기
Java/Stream 예제

[Java / Stream] 정수 배열(int[])을 해시맵으로 변환하기 / Collectors.toMap() 활용

by Dev_Green 2023. 5. 20.

예제 상황

다음과 같은 정수 배열 arr가 있을 때, 이 배열의 원소 별 count를 담는 해시맵을 만들고자 할 때 Collectors.toMap() 메서드를 활용할 수 있다.

결과로서의 arrMap은 다음과 같은 Key : Value 쌍을 이룰 것이다.

- 1 : 3

- 2 : 2

- 3 : 1

int[] arr = {1, 1, 1, 2, 2, 3};

Map<Integer, Integer> arrMap = Arrays.stream(arr)
                                 .boxed()
                                 .collect(
                                    Collectors.toMap(
                                        x->x,
                                        x->1,
                                        Integer::sum));

 

toMap() 메서드 살펴보기

아래는 toMap()의 선언부이다.

인자로서 keyMapper, valueMapper, mergeFunction을 받는다.

이때 mergeFunction은 중복된 key가 존재할 때 그에 해당하는 value를 처리하는 방식을 지정하는 데 사용된다.