Jak dodać przedmiot do ArrayList
w Kotlinie?
89
W przypadku osób właśnie migrujących z programu java
In Kotlin
List
jest domyślnie niezmienną i zmienną wersją list MutableList
.
Stąd jeśli masz coś takiego:
val list: List<String> = ArrayList()
W takim przypadku nie otrzymasz add()
metody, ponieważ lista jest niezmienna. Dlatego będziesz musiał zadeklarować, MutableList
jak pokazano poniżej:
val list: MutableList<String> = ArrayList()
Teraz zobaczysz add()
metodę i możesz dodać elementy do dowolnej listy.
Jeśli masz kolekcję MUTABLE :
val list = mutableListOf(1, 2, 3) list += 4
Jeśli masz kolekcję IMMUTABLE :
var list = listOf(1, 2, 3) list += 4
Zwróć uwagę, że używam
val
dla listy mutable, aby podkreślić, że obiekt jest zawsze ten sam, ale jego zawartość się zmienia.W przypadku niezmiennej listy musisz to zrobić
var
.+=
Operator tworzy nowy obiekt z dodatkową wartością.źródło
+=
na niezmiennej liście, wymaga skopiowania wszystkich elementów listy do nowej listy mutable, a następnie ponownego przypisania jej do aktualnej listy. Nie wiedziałem, że zadeklarowanie listy jakovar
. w każdym razie deklarowanie listy jako var nie jest dla mnie dobrym pomysłem.var
. Jeśli niezmienna lista jest zadeklarowana jakoval
, to lista nie może się nigdy zmienić. Możliwe byłoby po prostu ponowne przypisanie go do innej zmiennej.Jeśli chcesz specjalnie używać java ArrayList, możesz zrobić coś takiego:
fun initList(){ val list: ArrayList<String> = ArrayList() list.add("text") println(list) }
W przeciwnym razie odpowiedź @guenhter jest tą, której szukasz.
źródło