Como adicionar um item a uma ArrayList em Kotlin?


Respostas:


103

Para pessoas que estão migrando de java, In Kotlin Listé por padrão imutável e uma versão mutável de Lists é chamada MutableList.

Portanto, se você tiver algo como:

val list: List<String> = ArrayList()

Nesse caso, você não obterá um add()método, pois list é imutável. Portanto, você terá que declarar um MutableListconforme mostrado abaixo:

val list: MutableList<String> = ArrayList()

Agora você verá um add()método e poderá adicionar elementos a qualquer lista.


5
Obrigado! Eu tenho batido minha cabeça sobre esse método positivo em Arrays ...
dasfima

1
Legal, exatamente o que estou procurando. Obrigado.
Sam Chen

Qual é a diferença de uso entre val list: MutableList<String> = ArrayList()e val list = mutableListOf<String>()?
Sam Chen

79

Se você tiver uma coleção MUTABLE :

val list = mutableListOf(1, 2, 3)
list += 4

Se você tiver uma coleção IMUTÁVEL :

var list = listOf(1, 2, 3)
list += 4

note que eu uso valpara a lista mutável para enfatizar que o objeto é sempre o mesmo, mas seu conteúdo muda.

No caso da lista imutável, você tem que fazê-la var. Um novo objeto é criado pelo +=operador com o valor adicional.


7
fazendo +=em uma lista não mutável, exigir a cópia de todos os elementos da lista em uma nova lista mutável e então reatribuí-la à sua lista real. Não sabia que era adequado declarar sua lista como var. de qualquer forma, declarar uma lista var não é uma boa ideia para mim.
crgarridos

1
Se uma lista for imutável, você não tem outra opção além de declará-la como var. Se uma lista imutável for declarada como val, então a lista nunca poderá ser alterada. Apenas reatribuí-lo a outra variável seria possível.
guenhter

1
Exatamente, não quero permitir alterar a referência das minhas variáveis. pode ter um efeito colateral em tarefas externas / simultâneas. melhor criar uma cópia para extrair a lógica. Mas isso está fora do escopo da questão.
crgarridos de

24

Se você deseja usar especificamente java ArrayList, pode fazer algo assim:

fun initList(){
    val list: ArrayList<String> = ArrayList()
    list.add("text")
    println(list)
}

Caso contrário, a resposta @guenhter é a que você está procurando.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.