将 LinkedHasSet 从一种类型转换为另一种类型

时间:2021-01-21 12:37:55

标签: kotlin

我有一个非常简单的问题,我需要将包含一种类型对象的 LinkedHashSet 转换为另一种类型。

所以基本上我想做的是这样的事情(如果地图可以返回除 TypeB 以外的任何内容:

LinkedHashSet<TypeA> firstSet

LinkedHashSet<TypeB> secondSet = firstSet.map {
   TypeB(firstSet.value1, firstSet.value2)
}

这主要是为了表明我想要实现的目标,当然它不起作用。有人可以帮我用 Kotlin 写这个吗?

1 个答案:

答案 0 :(得分:3)

map 返回一个 List,但您可以使用 mapTo 将结果元素直接插入到您作为第一个参数提供的集合中。此集合也会返回,以便您可以将其分配给 secondSet

val secondSet: LinkedHashSet<TypeB> = firstSet.mapTo(LinkedHashSet<TypeB>()) {
   TypeB(it.value1, it.value2)
}

这比使用 map 更有效,因为它避免了创建中间 List 来保存结果。