如何在Kotlin复制列表?
我使用
val selectedSeries = mutableListOf<String>()
selectedSeries.addAll(series)
有没有更简单的方法?
如何在Kotlin复制列表?
我使用
val selectedSeries = mutableListOf<String>()
selectedSeries.addAll(series)
有没有更简单的方法?
当前回答
val selectedSeries = listOf(*series.toTypedArray())
其他回答
就像在Java中一样:
列表:
val list = mutableListOf("a", "b", "c")
val list2 = ArrayList(list)
Map:
val map = mutableMapOf("a" to 1, "b" to 2, "c" to 3)
val map2 = HashMap(map)
假设你的目标是JVM(或Android);我不确定它是否适用于其他目标,因为它依赖于ArrayList和HashMap的复制构造函数。
以我之见,最好也是最常用的方法是在Kotlin(1.6+)的新版本中使用集合构建器。
val shallowListCopy = buildList { addAll(list) }
val selectedSeries = listOf(*series.toTypedArray())
var oldList: List<ClassA>?
val newList = oldList.map { it.copy() }
我将使用toCollection()扩展方法:
val original = listOf("A", "B", "C")
val copy = original.toCollection(mutableListOf())
这将创建一个新的MutableList,然后将原列表中的每个元素添加到新创建的列表中。
这里的推断类型是MutableList<String>。如果你不想暴露这个新列表的可变性,你可以显式地将该类型声明为一个不可变列表:
val copy: List<String> = original.toCollection(mutableListOf())