Map.mapTo到另一个地图

时间:2017-03-13 16:32:45

标签: kotlin

我想将Map<DAO, Int>映射到Map<String, Boolean>,但我无法在地图功能中返回Map.Entry:

itemsWithQuantity.mapTo(mutableMapOf<String, Boolean>(), { it.key.toString() to it.value != 0 })

(当然我使用的是更复杂的映射函数,但它没关系,问题是一样的)

它说

MutableMap<String, Boolean> is not a subtype of MutableCollection<Pair<String, Boolean>>.

那么如何返回Map.Entry而不是Pair?

现在我这样做:

val detailsIds = mutableMapOf<String, Boolean>()
itemsWithQuantity.forEach { item, quantity -> detailsIds.put(it.key.toString(), it.value != 0) }

但我想使用mapTo

1 个答案:

答案 0 :(得分:13)

改为使用associateTo

xs.associateTo(mutableMapOf<String, Boolean>(), { "${it.key}" to (it.value != 0) })

另外,请注意it.value != 0附近的括号。

mapTo功能与map类似,不会将结果收集到Map,而是与Collection一起使用,期望您提供MutableCollection<Pair<String, Boolean>>