我有一个非常简单的问题,我需要将包含一种类型对象的 LinkedHashSet
转换为另一种类型。
所以基本上我想做的是这样的事情(如果地图可以返回除 TypeB 以外的任何内容:
LinkedHashSet<TypeA> firstSet
LinkedHashSet<TypeB> secondSet = firstSet.map {
TypeB(firstSet.value1, firstSet.value2)
}
这主要是为了表明我想要实现的目标,当然它不起作用。有人可以帮我用 Kotlin 写这个吗?
答案 0 :(得分:3)
map
返回一个 List
,但您可以使用 mapTo
将结果元素直接插入到您作为第一个参数提供的集合中。此集合也会返回,以便您可以将其分配给 secondSet
:
val secondSet: LinkedHashSet<TypeB> = firstSet.mapTo(LinkedHashSet<TypeB>()) {
TypeB(it.value1, it.value2)
}
这比使用 map
更有效,因为它避免了创建中间 List
来保存结果。