如何在Kotlin复制列表?
我使用
val selectedSeries = mutableListOf<String>()
selectedSeries.addAll(series)
有没有更简单的方法?
如何在Kotlin复制列表?
我使用
val selectedSeries = mutableListOf<String>()
selectedSeries.addAll(series)
有没有更简单的方法?
当前回答
你可以使用
工作表 -> 到列表()
数组 -> toArray()
ArrayList -> toArray()
MutableList -> toMutableList()
例子:
val array = arrayListOf("1", "2", "3", "4")
val arrayCopy = array.toArray() // copy array to other array
Log.i("---> array " , array?.count().toString())
Log.i("---> arrayCopy " , arrayCopy?.count().toString())
array.removeAt(0) // remove first item in array
Log.i("---> array after remove" , array?.count().toString())
Log.i("---> arrayCopy after remove" , arrayCopy?.count().toString())
打印日志:
array: 4
arrayCopy: 4
array after remove: 3
arrayCopy after remove: 4
其他回答
这很好。
val selectedSeries = series.toMutableList()
以我之见,最好也是最常用的方法是在Kotlin(1.6+)的新版本中使用集合构建器。
val shallowListCopy = buildList { addAll(list) }
我建议你做个肤浅的拷贝
.map{it}
这将适用于许多收集类型。
你可以使用ArrayList构造函数:
我将使用toCollection()扩展方法:
val original = listOf("A", "B", "C")
val copy = original.toCollection(mutableListOf())
这将创建一个新的MutableList,然后将原列表中的每个元素添加到新创建的列表中。
这里的推断类型是MutableList<String>。如果你不想暴露这个新列表的可变性,你可以显式地将该类型声明为一个不可变列表:
val copy: List<String> = original.toCollection(mutableListOf())