如何在 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:
话又说回来,如果这没有通过代码审查阶段,我也不会感到惊讶。
哦。我有 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: 话又说回来,如果这没有通过代码审查阶段,我也不会感到惊讶。