Ich sehe, dass Kotlin eine List<out E>
Sammlung hat und ich habe mich über verschiedene Möglichkeiten gewundert, eine zu initialisieren. In Java könnte ich schreiben:
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Wie kann ich dasselbe in Kotlin erreichen?
listOf
?Antworten:
listOf
Top-Level-Funktion zur Rettung:val geeks = listOf("Fowler", "Beck", "Evans")
quelle
List<T>
, daher sollte man nicht davon ausgehen, dass er veränderbar ist.Sowohl die positiv bewerteten Antworten von Ilya als auch von Gmariotti sind gut und richtig. Einige Alternativen sind jedoch in Kommentaren verteilt, andere werden überhaupt nicht erwähnt.
Diese Antwort enthält eine Zusammenfassung der bereits gegebenen Antworten sowie Erläuterungen und einige andere Alternativen.
Unveränderliche Listen (
List
)Unveränderliche oder schreibgeschützte Listen sind Listen, in denen keine Elemente hinzugefügt oder entfernt werden können.
listOf()
oft, was Sie wollen. Dadurch wird eine unveränderliche Liste erstellt, ähnlich wieArrays.asList
in Java.emptyList()
wird dasselbe getan , es wird jedoch natürlich eine leere Liste zurückgegeben.listOfNotNull()
Gibt eine unveränderliche Liste ohne allenull
Elemente zurück.Veränderbare Listen (
MutableList
)Bei veränderlichen Listen können Elemente hinzugefügt oder entfernt werden.
mutableListOf()
ist normalerweise das, was Sie möchten, wenn Sie Elemente zur Liste hinzufügen oder daraus entfernen müssen.arrayListOf()
. Dies schafft eine veränderlicheArrayList
. Wenn Sie wirklich eineArrayList
Implementierung wünschen , verwenden Sie diese übermutableListOf()
.List
Implementierungen, die keine Komfortfunktionen haben, können sie beispielsweise wie folgt initialisiert werdenval list = LinkedList<String>()
. Das heißt, Sie erstellen das Objekt einfach, indem Sie seinen Konstruktor aufrufen. Verwenden Sie diese Option nur, wenn Sie beispielsweise wirklich eineLinkedList
Implementierung wünschen .quelle
Gerade für weitere Informationen hinzufügen, bietet Kotlin sowohl unveränderlich
List
undMutableList
das kann mit initialisiert werdenlistOf
undmutableListOf
. Wenn Sie mehr daran interessiert sind, was Kotlin in Bezug auf Sammlungen anbietet, können Sie die offiziellen Referenzdokumente unter Sammlungen aufrufen .quelle
Lassen Sie mich einige Anwendungsfälle erläutern: Erstellen Sie eine unveränderliche (nicht änderbare) Liste mit initialisierenden Elementen:
val myList = listOf("one" , "two" , "three")
Lassen Sie uns eine veränderbare (veränderbare) Liste mit initialisierenden Feldern erstellen:
val myList = mutableListOf("one" , "two" , "three")
Lassen Sie uns eine unveränderliche (nicht veränderbare) deklarieren und dann instanziieren:
lateinit var myList : List<String> // and then in the code : myList = listOf("one" , "two" , "three")
Und zum Schluss noch ein paar zusätzliche Elemente:
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
quelle
Auf diese Weise können Sie die Liste in Kotlin initialisieren
val alphabates : List<String> = listOf("a", "b", "c")
quelle