如何在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 }
返回成对流,但我找不到收集这种流的方法。
答案 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}