Je vois que Kotlin a un List<out E>
collection mais je ne sais pas comment l’initialiser. En Java, je pourrais écrire:
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Comment puis-je obtenir la même chose à Kotlin?
listOf
fonction de premier plan à la rescousse:
val geeks = listOf("Fowler", "Beck", "Evans")
Juste pour ajouter plus d’informations, Kotlin propose à la fois des List
et MutableList
immuables qui peuvent être initialisés avec listOf
et mutableListOf
. Si les offres de Kotlin concernant les collections vous intéressent davantage, vous pouvez consulter la documentation officielle de référence à l’adresse Collections .
Les réponses positives de Ilya et gmariotti sont bonnes et correctes. Certaines alternatives sont cependant réparties dans les commentaires, et certaines ne sont pas mentionnées du tout.
Cette réponse comprend un résumé de celles déjà données, ainsi que des clarifications et quelques autres alternatives.
List
)Les listes immuables, ou en lecture seule, sont des listes qui ne peuvent pas avoir d'éléments ajoutés ou supprimés.
listOf()
fait souvent ce que vous voulez. Cela crée une liste immuable, semblable à Arrays.asList
en Java.emptyList()
fait la même chose, mais renvoie naturellement une liste vide.listOfNotNull()
renvoie une liste immuable excluant tous les éléments null
.MutableList
)Les listes mutables peuvent avoir des éléments ajoutés ou supprimés.
mutableListOf()
, qui correspond généralement à ce que vous souhaitez lorsque vous devez ajouter ou supprimer des éléments de la liste.arrayListOf()
. Cela crée un mutable ArrayList
. Si vous voulez vraiment une implémentation ArrayList
, utilisez ceci sur mutableListOf()
.List
, qui n'ont aucune fonction de confort, elles peuvent être initialisées comme, par exemple, val list = LinkedList<String>()
. C'est simplement créer l'objet en appelant son constructeur. Utilisez ceci uniquement si vous voulez vraiment, par exemple, une implémentation de LinkedList
.Laissez-moi vous expliquer quelques cas d'utilisation: créons une liste immuable (non modifiable) avec des éléments d'initialisation:
val myList = listOf("one" , "two" , "three")
créons une liste modifiable (modifiable) avec des champs d'initialisation:
val myList = mutableListOf("one" , "two" , "three")
Déclarons un immuable (non modifiable) puis instancions-le:
lateinit var myList : List<String>
// and then in the code :
myList = listOf("one" , "two" , "three")
Et enfin, ajoutez quelques éléments supplémentaires à chacun:
val myList = listOf("one" , "two" , "three")
myList.add() //Unresolved reference : add, no add method here as it is non mutable
val myMutableList = mutableListOf("one" , "two" , "three")
myMutableList.add("four") // it's ok