Bonjour quelqu'un peut me aider comment peut ajouter de la valeur dans arraylist dans Kotlin langueInsérer ou ajouter un élément dans ArrayList dans Kotlin?
Répondre
Si vous avez une collection mutables:
val list = mutableListOf(1, 2, 3)
list += 4
Si vous avez une collection IMMUTABLE:
var list = listOf(1, 2, 3)
list += 4
notez que j'utilise val
pour la liste mutable pour souligner que l'objet est toujours le même, mais son conte nt changements.
Dans le cas de la liste immutable, vous devez le faire var
. Un nouvel objet est créé par l'opérateur +=
avec la valeur supplémentaire.
Si vous voulez utiliser spécifiquement java ArrayList alors vous pouvez faire quelque chose comme ceci:
fun initList(){
val list: ArrayList<String> = ArrayList()
list.add("text")
println(list)
}
Sinon @guenhter réponse est celle que vous recherchez.
Les collections de Kotlin sont en lecture seule par défaut, donc listOf
, mapOf
etc. retourner des collections, auxquelles vous ne pouvez pas ajouter d'éléments. Par exemple, List<out T>
est une interface centrale dans laquelle le mot-clé out
indique que les éléments T
sont uniquement produits par la liste, mais pas consumed
. Par conséquent, seuls size
, get
, etc. peuvent être invoqués. L'interface MutableList<T>
d'autre part peut également consommerT
, c'est-à-dire add
est autorisée.
val numbers: MutableList<Int> = mutableListOf(1, 2, 3)
val readOnlyView: List<Int> = numbers
println(numbers) // prints "[1, 2, 3]"
numbers.add(4)
println(readOnlyView) // prints "[1, 2, 3, 4]"
readOnlyView.clear() // -> does not compile
Comme vous pouvez le voir, le stdlib comprend des méthodes pour une telle mutable (inscriptible) collections ainsi: mutableListOf
, mutableSetOf()
etc.
Pour plus de détails s'il vous plaît jeter un oeil at the docs.
faire '+ =' dans une liste non modifiable, nécessite de copier tous les éléments de la liste dans une nouvelle liste mutable, puis de la réaffecter à votre liste actuelle. Je ne savais pas que c'était approprié de déclarer votre liste comme 'var'. de toute façon, déclarer une liste var n'est pas une bonne idée pour moi. – crgarridos
Si une liste est immuable, vous n'avez pas d'autre option pour la déclarer comme 'var'. Si une liste immuable est déclarée comme 'val', la liste ne peut jamais changer. Juste le réaffecter à une autre variable serait possible. – guenhter
Exactement, je ne veux pas permettre de changer la référence de mes variables. il peut avoir un effet secondaire dans les tâches externes/simultanées. mieux de créer une copie pour extraire la logique. Mais ceci est hors de la portée de la question. – crgarridos