0

众所周知,Java Stream groupingBy不允许空键。对于这种情况,有一个解决方案,它允许按空键分组:

public static <T, A> Collector<T, ?, Map<A, List<T>>> groupingBy_WithNullKeys(Function<? super T, ? extends A> classifier) {
    return Collectors.toMap(
            classifier,
            Collections::singletonList,
            (List<T> oldList, List<T> newEl) -> {
                List<T> newList = new ArrayList<>(oldList.size() + 1);
                newList.addAll(oldList);
                newList.addAll(newEl);
                return newList;
            });
}

但是groupingBy也有一个签名,它不仅允许传递函数,还允许传递另一个收集器:

public static <T, K, A, D>
    Collector<T, ?, Map<K, D>> groupingBy(Function<? super T, ? extends K> classifier,
                                          Collector<? super T, A, D> downstream)

在这种情况下我应该如何允许空键?

4

0 回答 0