Java中默认Collectors.toMap的坑
两参数的toMap的合并策略是直接抛出异常,需要额外注意。源码如下:
1 2 3 4 5 6 7 8 9
| public static <T, K, U> Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper) { return toMap(keyMapper, valueMapper, throwingMerger(), HashMap::new); }
private static <T> BinaryOperator<T> throwingMerger() { return (u,v) -> { throw new IllegalStateException(String.format("Duplicate key %s", u)); }; }
|