231 votes

Comment cloner ou copier une liste dans kotlin

Comment copier une liste dans Kotlin?

j'utilise

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

Y a-t-il un moyen plus facile?

282voto

Audi Points 2808

Cela fonctionne bien.

 val selectedSeries = series.toMutableList()
 

55voto

Rasoul Miri Points 1201

Vous pouvez utiliser

Liste -> toList ()

Tableau -> toArray ()

ArrayList -> toArray ()

MutableList -> toMutableList ()


Exemple:

 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())
 

journal d'impression:

 array: 4
arrayCopy: 4
array after remove: 3
arrayCopy after remove: 4
 

48voto

Levon Petrosyan Points 1012

Si votre liste contient la classe de données Kotlin , vous pouvez le faire.

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

22voto

Jacob Wu Points 324

Je peux venir avec deux alternatives:

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

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

Mise à jour: avec le nouveau Type de moteur d'Inférence(opt-in Kotlin 1.3), Nous pouvons omettre le paramètre de type générique dans le 1er exemple et avoir ceci:

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

FYI.La façon d'opt-dans la nouvelle Inférence est - kotlinc -Xnew-inference ./SourceCode.kt pour la ligne de commande, ou kotlin { experimental { newInference 'enable'} de Gradle. Pour plus d'info sur le nouveau Type d'Inférence, regardez cette vidéo: KotlinConf 2018 Nouveau Type d'Inférence et de la Langue des Fonctionnalités par Svetlana Isakova, en particulier à l'inférence pour les constructeurs' à 30'

9voto

Lensflare Points 650

Pour une copie peu profonde, je suggère

 .map{it}
 

Cela fonctionnera pour de nombreux types de collection.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X