123 votes

Comment ajouter un élément à une ArrayList en Kotlin ?

Comment ajouter un élément à un ArrayList en Kotlin ?

156voto

Tarun Points 2643

Pour les personnes qui viennent de migrer de java En Kotlin List est par défaut immuable et la version mutable de Lists est appelée MutableList .

Par conséquent, si vous avez quelque chose comme :

val list: List<String> = ArrayList()

Dans ce cas, vous n'obtiendrez pas de add() car la liste est immuable. Vous devrez donc déclarer une méthode MutableList comme indiqué ci-dessous :

val list: MutableList<String> = ArrayList()

Vous verrez maintenant un add() et vous pouvez ajouter des éléments à n'importe quelle liste.

8 votes

Merci. Je me suis tapé la tête sur cette méthode plus dans Arrays...

1 votes

Joli, juste ce que je cherche. Merci.

0 votes

Quelle est la différence d'utilisation entre val list: MutableList<String> = ArrayList() y val list = mutableListOf<String>() ?

93voto

guenhter Points 4460

Si vous avez un MUTABLE collection :

val list = mutableListOf(1, 2, 3)
list += 4

Si vous avez un IMMUTABLE collection :

var list = listOf(1, 2, 3)
list += 4

Notez que j'utilise val pour la liste mutable afin de souligner que l'objet est toujours le même, mais que son contenu change.

Dans le cas d'une liste immuable, vous devez la rendre var . Un nouvel objet est créé par la fonction += avec la valeur supplémentaire.

7 votes

En faisant += dans une liste non-mutable, il faut copier tous les éléments de la liste dans une nouvelle liste mutable, puis la réaffecter à votre liste actuelle. Je ne savais pas qu'il était possible de déclarer votre liste en tant que var . de toute façon, déclarer une liste comme var n'est pas une bonne idée pour moi.

1 votes

Si une liste est immuable, vous n'avez pas d'autre choix que de la déclarer en tant que var . Si une liste immuable est déclarée comme val alors la liste ne pourra jamais être modifiée. Il suffirait de la réaffecter à une autre variable.

1 votes

Exactement, je ne veux pas permettre de changer la référence de mes variables. Cela peut avoir un effet secondaire dans les tâches externes/de concordance. Il vaut mieux créer une copie pour extraire la logique. Mais cela sort du cadre de la question.

36voto

pokemzok Points 549

Si vous voulez utiliser spécifiquement les ArrayList de Java, vous pouvez faire quelque chose comme ceci :

fun initList(){
    val list: ArrayList<String> = ArrayList()
    list.add("text")
    println(list)
}

Sinon, la réponse de @guenhter est celle que vous recherchez.

10voto

The MJ Points 84

Vous pouvez ajouter un nouvel élément à un tableau à l'aide de la commande += par exemple :

private var songs: Array<String> = arrayOf()
   fun add(input: String) {
        songs += input
    }

4voto

Vous pouvez ajouter un élément à arrayList en utilisant ajouter() en Kotlin. Par exemple,

arrayList.add(10)

Le code ci-dessus ajoutera l'élément 10 à arrayList.

Cependant, si vous utilisez un tableau ou une liste, vous ne pouvez pas ajouter d'élément. Ceci est dû au fait que Array y Liste sont immuables. Si vous voulez ajouter un élément, vous devrez utiliser MutableList.

Plusieurs solutions de contournement :

  1. Utilisation de la méthode System.arraycopy() : Vous pouvez atteindre le même objectif en créant un nouveau tableau et en copiant toutes les données du tableau existant dans le nouveau tableau avec les nouvelles valeurs. De cette façon, vous aurez un nouveau tableau avec toutes les valeurs souhaitées (valeurs existantes et nouvelles).
  2. Utilisation de MutableList : : Convertir un tableau en liste mutable en utilisant toMutableList() méthode. Ensuite, ajoutez-y un élément.
  3. Utilisation de Array.copyof() : Assez similaire à System.arraycopy() méthode.

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