使用javaslang2.1.0-alpha将Stream<Tuple2<T,U>>转换为Map<T,List<U>>的最惯用的方法是什么?
// initial stream
Stream.of(
Tuple.of("foo", "x"),
Tuple.of("foo", "y"),
Tuple.of("bar", "x"),
Tuple.of("bar", "y"),
Tuple.of("bar", "z")
) 应成为:
// end result
HashMap.ofEntries(
Tuple.of("foo", List.of("x","y")),
Tuple.of("bar", List.of("x","y","z"))
);发布于 2017-04-06 22:36:18
@Opal是对的,foldLeft是从元组创建HashMap的方法。
在javaslang2.1.0-alpha中,我们还使用Multimap来表示类似于地图的数据结构中的元组。
// = HashMultimap[List]((foo, x), (foo, y), (bar, x), (bar, y), (bar, z))
Multimap<String, String> map =
HashMultimap.withSeq().ofEntries(
Tuple.of("foo", "x"),
Tuple.of("foo", "y"),
Tuple.of("bar", "x"),
Tuple.of("bar", "y"),
Tuple.of("bar", "z")
);
// = Some(List(x, y))
map.get("foo");(另见HashMultimap Javadoc)
根据地图的进一步处理方式,这可能会派上用场。
免责声明:我是Javaslang的创造者
https://stackoverflow.com/questions/43258086
复制相似问题