¿Cómo cambia el tamaño de 6 a 2 en Kotlin?

Intenta ejecutarlo solo si da el resultado esperado, es decir, Length: 5 entonces dime cuál es el problema y si da el mismo resultado que el mío, cuéntame el error que cometí en mi código …

y ejecute este progtwig sin esas 2 líneas que he mencionado en el código tendrá el resultado esperado.

Código:

 fun main(args: Array<String>) { var list1: MutableList<Int> = mutableListOf(1,2,3,4,5) list1.add(6) println("Length: ${list1.size}") // Problem is in these 2 lines var list3 = list1.subList(0,3) // Line no. 1 list3.clear() // Line no. 3 list1.remove(5) println("Length: ${list1.size}") list1.forEach{n -> println(n)} } 

y esta es la salida:

 Length: 6 List 3: 1 List 3: 2 List 3: 3 Length: 2 4 6 Process finished with exit code 0 

Gracias por adelantado

De la documentation de subList :

Devuelve una vista de la parte de esta list entre el índice especificado (incluido) y el índice (exclusivo). La list devuelta está respaldada por esta list, por lo que los cambios no estructurales en la list devuelta se reflejan en esta list, y viceversa.

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/sub-list.html

List3 no es una list nueva, es una vista de la list original. Una vez que lo borre, los elementos también se eliminarán del original.

Comparar:

 var list3 = list1.subList(0,3).toMutableList() 

Aunque el comportamiento de los cambios estructurales en la vista no está definido, la única forma en que puede funcionar es mediante la copy de cambios en la list base: no puede borrar una vista sin borrar esa parte de la list base.