remove objects from data list copy kotlin

objects - Cómo clonar o copiar una lista en kotlin



list of objects in kotlin (6)

¿Cómo copiar la lista en Kotlin?

Estoy usando

val selectedSeries = mutableListOf<String>() selectedSeries.addAll(series)

¿Hay una manera más fácil?


Esto funciona bien

val selectedSeries = series.toMutableList()


Para una copia superficial, sugiero

selectedSeries = ArrayList(series.map { it.copy() })

Eso funcionará para muchos tipos de colección.


Puedes usar

Lista -> toList ()

Matriz -> toArray ()

ArrayList -> toArray ()

MutableList -> toMutableList ()

Ejemplo:

array: 4 arrayCopy: 4 array after remove: 3 arrayCopy after remove: 4

imprimir registro:

.map{it}


Puedo proponer dos formas alternativas:

1. val selectedSeries = mutableListOf<String>().apply { addAll(series) } 2. val selectedSeries = mutableListOf(*series.toTypedArray())

Actualización: con el nuevo motor de inferencia de tipos (opt-in en Kotlin 1.3), podemos omitir el parámetro de tipo genérico en el primer ejemplo y tener esto:

1. val selectedSeries = mutableListOf().apply { addAll(series) }

FYI. La forma de habilitar la nueva Inferencia es kotlinc -Xnew-inference ./SourceCode.kt para la línea de comandos, o kotlin { experimental { newInference ''enable''} para Gradle. Para obtener más información sobre la nueva inferencia de tipos, consulte este video: KotlinConf 2018 - Nuevas características de inferencia de tipos y lenguaje relacionado de Svetlana Isakova , especialmente ''inferencia para constructores'' a los 30 ''


toCollection() método de extensión toCollection() :

val original = listOf("A", "B", "C") val copy = original.toCollection(mutableListOf())

Esto creará una nueva MutableList y luego agregará cada elemento del original a la lista recién creada.

El tipo inferido aquí será MutableList<String> . Si no desea exponer la mutabilidad de esta nueva lista, puede declarar el tipo explícitamente como una lista inmutable:

val copy: List<String> = original.toCollection(mutableListOf())


Esto funciona para mi

val array:ArrayList<String> = ArrayList() array.add("1") array.add("2") array.add("3") array.add("4") val arrayCopy = array.toArray() // copy array to other array Log.i("---> array " , array?.count().toString()) Log.i("---> arrayCopy " , arrayCopy?.count().toString()) array.removeAt(0) // remove first item in array Log.i("---> array after remove" , array?.count().toString()) Log.i("---> arrayCopy after remove" , arrayCopy?.count().toString())