Kotlin的尺寸从6变为2?

试着自己运行,如果它给出了预期的输出,即Length: 5然后告诉我什么问题,如果它给出了我的相同的输出,然后告诉我在我的代码中犯了错误…

并运行这个程序没有这两行,我已经在代码中提到你会有预期的输出。

码:

 fun main(args: Array) { var list1: MutableList = 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)} } 

这是输出:

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

提前致谢

subList的文档:

返回指定的fromIndex(含)和toIndex(不含)之间的列表部分的视图 。 返回的列表由此列表支持,因此返回列表中的非结构化更改将反映在此列表中,反之亦然。

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

List3不是一个新的列表,它是原始列表的视图。 一旦清除它,元素也将从原始中删除。

比较:

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

尽管未定义视图中的结构更改的行为,但它可以工作的唯一方法是将更改复制到基本列表 – 不清除基本列表的部分不清除视图。