如何在Kotlin复制列表?

我使用

val selectedSeries = mutableListOf<String>()
selectedSeries.addAll(series)

有没有更简单的方法?


当前回答

val selectedSeries = listOf(*series.toTypedArray())

其他回答

我建议你做个肤浅的拷贝

.map{it}

这将适用于许多收集类型。

在尝试浅拷贝,深拷贝克隆和更多的我发现这个解决方案肯定会为你工作。

val iterator: Iterator<Object> = yourList.iterator()
        while (iterator.hasNext())
        newList.add(iterator.next().copy())

我将使用toCollection()扩展方法:

val original = listOf("A", "B", "C")
val copy = original.toCollection(mutableListOf())

这将创建一个新的MutableList,然后将原列表中的每个元素添加到新创建的列表中。

这里的推断类型是MutableList<String>。如果你不想暴露这个新列表的可变性,你可以显式地将该类型声明为一个不可变列表:

val copy: List<String> = original.toCollection(mutableListOf())

你可以使用ArrayList构造函数:

以我之见,最好也是最常用的方法是在Kotlin(1.6+)的新版本中使用集合构建器。

   val shallowListCopy = buildList { addAll(list) }