Veo que Kotlin tiene una List<out E>
colección y me preguntaba sobre diferentes formas de inicializar una. En Java, podría escribir:
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
¿Cómo puedo lograr lo mismo en Kotlin?
Veo que Kotlin tiene una List<out E>
colección y me preguntaba sobre diferentes formas de inicializar una. En Java, podría escribir:
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
¿Cómo puedo lograr lo mismo en Kotlin?
Respuestas:
listOf
función de alto nivel al rescate:
val geeks = listOf("Fowler", "Beck", "Evans")
List<T>
, por lo que no se debe asumir que es mutable.
Tanto las respuestas de Ilya como de gmariotti con voto positivo son buenas y correctas. Sin embargo, algunas alternativas se exponen en los comentarios y algunas no se mencionan en absoluto.
Esta respuesta incluye un resumen de las ya dadas, junto con aclaraciones y un par de otras alternativas.
List
)Las listas inmutables o de solo lectura son listas que no pueden tener elementos agregados o eliminados.
listOf()
menudo hace lo que quiere. Esto crea una lista inmutable, similar a la Arrays.asList
de Java.emptyList()
hace lo mismo, pero naturalmente devuelve una lista vacía.listOfNotNull()
devuelve una lista inmutable que excluye todos los null
elementos.MutableList
)Las listas mutables pueden tener elementos agregados o eliminados.
mutableListOf()
, que normalmente es lo que desea cuando necesita agregar o eliminar elementos de la lista.arrayListOf()
. Esto crea un mutable ArrayList
. En caso de que realmente desee una ArrayList
implementación, use esto de nuevo mutableListOf()
.List
implementaciones, que no tienen funciones de conveniencia, se pueden inicializar como, por ejemplo val list = LinkedList<String>()
,. Eso es simplemente crear el objeto llamando a su constructor. Use esto solo si realmente desea, por ejemplo, una LinkedList
implementación.Solo para agregar más información, Kotlin ofrece inmutable List
y MutableList
que se puede inicializar con listOf
y mutableListOf
. Si está más interesado en lo que ofrece Kotlin con respecto a las colecciones, puede consultar los documentos de referencia oficiales en Colecciones .
Permítanme explicar algunos casos de uso: creemos una lista inmutable (no modificable) con elementos de inicialización:
val myList = listOf("one" , "two" , "three")
vamos a crear una lista mutable (modificable) con campos de inicialización:
val myList = mutableListOf("one" , "two" , "three")
Declaremos un inmutable (no modificable) y luego lo instanciamos:
lateinit var myList : List<String>
// and then in the code :
myList = listOf("one" , "two" , "three")
Y finalmente agregue algunos elementos adicionales a cada uno:
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
De esta manera, puede inicializar la Lista en Kotlin
val alphabates : List<String> = listOf("a", "b", "c")
listOf
¿ Con ?