如何在 java 流 API 中从 Stream<Tuple2<K, V>> 执行 Map<K, V>?

How to do Map<K, V> from Stream<Tuple2<K, V>> in java stream API?

哦。我有 Java 8 个,想收集一个

Map<K, V> 

来自

Stream<Tuple2<K, V>>

我不想使用 Pair,因为语法冗长。有什么办法吗

.collect(toMap(Tuple2::_1, Tuple2::_2))

谢谢

AFAIK,这在 java 中是不可避免的(与它在 scala 中的做法相比。

但是,如果您要在代码中使用大量元组来映射转换并希望避免冗长的语法,您可以创建一个自定义 TupleCollector 并添加一个 toMap 方法。

这可能是您进入 scala 的壁橱。

static class TupleCollector {
        public static <K, V, T extends Tuple2<K, V>> Collector<T, ?, Map<K, V>> toMap() {
            return Collectors.toMap(T::_1, T::_2);
        }
    }

调用代码

import static TupleCollector.toMap
...
myStream.collect(toMap());

PS: 话又说回来,如果这没有通过代码审查阶段,我也不会感到惊讶