.stream().collect(Collectors.toMap(A::getKey, B::getKey)
>> .stream().collect(Collectors.toMap(A::getKey, B::getKey, (k1,k2) -> k1)

java8 stream collect  toMap 사용 중 duplicate key 발생 시

Map 반환에 키 중복이 있을때 발생하는데,  오버로딩된 toMap 메소드 중 merge 기능이 있는걸 사용하면 된다. 

<실행되는 Collectors.class >

public static <T, K, U>
Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
                                Function<? super T, ? extends U> valueMapper,
                                BinaryOperator<U> mergeFunction) {
    return toMap(keyMapper, valueMapper, mergeFunction, HashMap::new);
}

+ Recent posts