如何在Kotlin复制列表?
我使用
val selectedSeries = mutableListOf<String>()
selectedSeries.addAll(series)
有没有更简单的方法?
如何在Kotlin复制列表?
我使用
val selectedSeries = mutableListOf<String>()
selectedSeries.addAll(series)
有没有更简单的方法?
当前回答
val selectedSeries = listOf(*series.toTypedArray())
其他回答
如果您的列表包含kotlin数据类,则可以这样做
selectedSeries = ArrayList(series.map { it.copy() })
在尝试浅拷贝,深拷贝克隆和更多的我发现这个解决方案肯定会为你工作。
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构造函数:
对于简单的列表,上面有许多正确的解决方案。
然而,它只是用于较浅的列表。
下面的函数适用于任何二维数组列表。实际上,ArrayList相当于MutableList。有趣的是,它在使用显式MutableList类型时不起作用。如果一个人需要更多的维度,就需要更多的函数。
fun <T>cloneMatrix(v:ArrayList<ArrayList<T>>):ArrayList<ArrayList<T>>{
var MatrResult = ArrayList<ArrayList<T>>()
for (i in v.indices) MatrResult.add(v[i].clone() as ArrayList<T>)
return MatrResult
}
演示整数矩阵:
var mat = arrayListOf(arrayListOf<Int>(1,2),arrayListOf<Int>(3,12))
var mat2 = ArrayList<ArrayList<Int>>()
mat2 = cloneMatrix<Int>(mat)
mat2[1][1]=5
println(mat[1][1])
它显示了12