隐式映射到Kotlin中的集合

隐式映射到Kotlin中的集合,kotlin,Kotlin,在映射完一个集合后,我必须显式地将它转换回集合。例如: fun getNewSet(oldSet: Set<String>): Set<String> { return oldSet .map{ getNewStringFromOld(it) } .toSet() } fun getNewSet(oldSet:Set):Set{ 返回旧集 .map{getNewStringFromOld(it)} .toSet() } 在不将集合显式转

在映射完一个集合后,我必须显式地将它转换回集合。例如:

fun getNewSet(oldSet: Set<String>): Set<String> {
return oldSet
        .map{ getNewStringFromOld(it) }
        .toSet()
}
fun getNewSet(oldSet:Set):Set{
返回旧集
.map{getNewStringFromOld(it)}
.toSet()
}

在不将集合显式转换回集合的情况下映射集合的正确方法是什么?

查看库代码,唯一的其他方法是调用
mapTo
,它获取目标集合:

oldSet.mapTo(HashSet<String>()) { getNewStringFromOld(id) }

谢谢你的解释,这正是我需要的。我经常使用它,所以提供的扩展功能非常方便。顺便说一句,提供的解释完全正确。Scala将一个集合映射到一个集合,如果不小心使用,就会导致错误
public inline fun <T, R> Iterable<T>.mapToSet(transform: (T) -> R): Set<R> {
  return mapTo(HashSet<R>(), transform)
}