Widzę, że Kotlin ma List<out E>kolekcję i zastanawiałem się nad różnymi sposobami jej zainicjowania. W Javie mógłbym napisać:
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Jak mogę osiągnąć to samo w Kotlinie?
Widzę, że Kotlin ma List<out E>kolekcję i zastanawiałem się nad różnymi sposobami jej zainicjowania. W Javie mógłbym napisać:
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
Jak mogę osiągnąć to samo w Kotlinie?
Odpowiedzi:
listOf funkcja na najwyższym poziomie na ratunek:
val geeks = listOf("Fowler", "Beck", "Evans")
List<T>, więc nie należy zakładać, że jest zmienny.
Obie odpowiedzi Ilya i gmariotti za głosami są dobre i poprawne. Niektóre alternatywy są jednak rozłożone w komentarzach, a niektóre w ogóle nie są wspominane.
Ta odpowiedź zawiera podsumowanie już podanych, wraz z wyjaśnieniami i kilkoma innymi alternatywami.
List)Listy niezmienne, czyli listy tylko do odczytu, to listy, do których nie można dodawać ani usuwać elementów.
listOf()często robi to, co chcesz. Tworzy to niezmienną listę, podobną do tej Arrays.asListw Javie.emptyList()robi to samo, ale naturalnie zwraca pustą listę.listOfNotNull()zwraca niezmienną listę wykluczającą wszystkie nullelementy.MutableList)Na listach z możliwością zmiany można dodawać lub usuwać elementy.
mutableListOf(), co zazwyczaj jest tym, czego potrzebujesz, gdy chcesz dodać lub usunąć elementy z listy.arrayListOf(). Tworzy to zmienny ArrayList. Jeśli naprawdę chcesz ArrayListimplementację, użyj tego powyżej mutableListOf().Listimplementacji, które nie mają żadnych wygodnych funkcji, można je zainicjalizować, na przykład, jako val list = LinkedList<String>(). Oznacza to po prostu utworzenie obiektu przez wywołanie jego konstruktora. Używaj tego tylko wtedy, gdy naprawdę chcesz, na przykład, LinkedListimplementację.Aby dodać więcej informacji, Kotlin oferuje zarówno niezmienne, jak Listi te, MutableListktóre można zainicjować za pomocą listOfi mutableListOf. Jeśli jesteś bardziej zainteresowany tym, co oferuje Kotlin w zakresie Kolekcji, możesz przejść do oficjalnych dokumentów referencyjnych w Kolekcje .
Pozwólcie, że wyjaśnię kilka przypadków użycia: stwórzmy niezmienną (niezmienną) listę z inicjalizującymi elementami:
val myList = listOf("one" , "two" , "three")
stwórzmy listę Mutable (zmienną) z polami inicjalizującymi:
val myList = mutableListOf("one" , "two" , "three")
Zadeklarujmy niezmienny (niezmienny), a następnie utwórzmy go:
lateinit var myList : List<String>
// and then in the code :
myList = listOf("one" , "two" , "three")
I na koniec dodaj do każdego dodatkowe elementy:
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
W ten sposób możesz zainicjować Listę w Kotlinie
val alphabates : List<String> = listOf("a", "b", "c")
listOf?