Map.mapTo到另一个地图

Vik*_*kov 8 kotlin

我想映射Map<DAO, Int>Map<String, Boolean>但我无法在map函数中返回Map.Entry:

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

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

它说

MutableMap<String, Boolean> is not a subtype of MutableCollection<Pair<String, Boolean>>.
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能返回Map.Entry而不是Pair?

现在我这样做:

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

但是我想用mapTo

hot*_*key 16

associateTo改为使用:

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

另外,请注意左右括号it.value != 0.

mapTo类似于map,该函数不会将结果收集到a中Map,而是与a一起使用Collection,期望您提供a MutableCollection<Pair<String, Boolean>>.

  • AssociateTo 仅适用于集合(您的 xs)。如果 xs 是一个 Map,那么这不起作用,正如所要求的那样。 (2认同)