web-dev-qa-db-ja.com

kotlinでリストを複製またはコピーする方法

Kotlinでリストをコピーする方法は?

私は使っています

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

もっと簡単な方法はありますか?

53
Audi

これは正常に機能します。

val selectedSeries = series.toMutableList()
76
Audi

次の2つの方法を考え出すことができます。

1. val selectedSeries = mutableListOf<String>().apply { addAll(series) }

2. val selectedSeries = mutableListOf(*series.toTypedArray())

更新:新しい型推論エンジン(Kotlin 1.3のオプトイン)を使用すると、最初の例でジェネリック型パラメーターを省略して、これを使用できます。

1. val selectedSeries = mutableListOf().apply { addAll(series) }

参考:新しい推論をオプトインする方法は、コマンドラインではkotlinc -Xnew-inference ./SourceCode.kt、Gradleではkotlin { experimental { newInference 'enable'}です。新しい型推論の詳細については、このビデオを確認してください: KotlinConf 2018-Svetlana Isakova による新しい型推論と関連言語機能、特に「ビルダー向けの推論」 'at 30'

7
Jacob Wu

浅いコピーについては、

.map{it}

これは、多くのコレクションタイプで機能します。

3
Lensflare

使用できます

リスト-> toList()

配列-> toArray()

ArrayList-> toArray()

MutableList-> toMutableList()


例:

val array:ArrayList<String> = ArrayList()
array.add("1")
array.add("2")
array.add("3")
array.add("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
3
Rasoul Miri

これは私のために働く

selectedSeries = ArrayList(series.map { it.copy() })
2
Levon Petrosyan