如何在Kotlin中收集成对的溪流?

时间:2018-09-27 20:06:23

标签: kotlin

如何在Kotlin中收集配对流? 因此,在Java中,我通常这样做:

Stream.of("1", "2", "3").map(x -> new AbstractMap.SimpleEntry<>(x, x)).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))

但是在科特林,

Stream.of("1", "2", "3").map{ x -> x to x } 

返回成对流,但我找不到收集这种流的方法。

2 个答案:

答案 0 :(得分:4)

在Kotlin中,使用listOf()比使用Java的Stream.of()更自然。拥有List<Pair>之后,您就可以使用.toMap()扩展名将它们变成地图!

val myMap: Map<String, String> = listOf("1", "2", "3").map{ it to it }.toMap()

.associate()上还有一个List函数,它会为您提供lambda:

val myMap2: Map<String, String> = listOf("1", "2", "3").associate { it to it }

那个看起来更干净,恕我直言。

答案 1 :(得分:0)

由于您将list元素本身用作键,因此使用associateWith将使代码更加简洁:

val myMap = listOf("1", "2", "3").associateWith{ it }

结果:

  

{1 = 1,2 = 2,3 = 3}