如何使Kotlin列表可变,添加项,然后迭代生成的不可变列表?

如何使Kotlin列表可变,添加项,然后迭代生成的不可变列表?,kotlin,immutability,mutability,immutablelist,Kotlin,Immutability,Mutability,Immutablelist,基本上,我需要从几个项目的不可变列表开始,将其转换为可变列表并添加几个项目,然后使用firstOrNull对其进行迭代。这是我的草稿文件: val immutableStarter=listOf(1,2,3) val mutable=immutableStarter.toMutableList() 可变。添加(4) 可变的.addAll(列表(5,6,7)) 可变。添加(8) println(可变) val result=mutable.firstOrNull{item-> println(“检

基本上,我需要从几个项目的不可变列表开始,将其转换为可变列表并添加几个项目,然后使用
firstOrNull
对其进行迭代。这是我的草稿文件:

val immutableStarter=listOf(1,2,3)
val mutable=immutableStarter.toMutableList()
可变。添加(4)
可变的.addAll(列表(5,6,7))
可变。添加(8)
println(可变)
val result=mutable.firstOrNull{item->
println(“检查项目$Item”)
项目>7
} ?: 0
println(结果)
println(可变)
调用将正确打印包含所有八项的列表。但是,
firstOrNull
操作似乎只在列表中的前三项上运行。我只获得了三次
“Checking Item$Item”
输出。如果我向
immutableStarter
添加第四项,它将检查四次。因此,出于某种原因,我所能收集到的最好结果,只是在初始的、不可变的起始列表中的项上进行迭代

如果我在
try
/
catch
或使用
run
中包装第10-15行,我将获得预期的输出-列表中8个项目中的每个项目的
“Checking Item$Item”
打印输出

为什么它不能像我写的那样工作,以及如何将
firstOrNull
调用包装在
try
/
catch
run
中使其工作

================================================

编辑:有人要求输出我的草稿文件。这是:

Checking Item 1
Checking Item 2
Checking Item 3
val immutableStarter: List<Int>

val mutable: MutableList<Int>
true
true
true

[1, 2, 3, 4, 5, 6, 7, 8]


val result: Int


0

你能把你的作品贴出来吗?因为我用
检查项得到了正确的结果…
打印了8次。@MohammadOmidvar绝对-刚刚添加了我的输出和一些关于为什么我看到这些结果的进一步理论。将其放入
main
方法中,通过IntelliJ运行它,或者执行
kotlinc
然后
kotlin
运行它,这两种方法都可以很好地工作我。你能把你的输出贴出来吗?因为我用
检查项得到了正确的结果…
打印了8次。@MohammadOmidvar绝对-刚刚添加了我的输出和一些关于为什么我看到这些结果的进一步理论。将其放入
main
方法中,通过IntelliJ运行它,或者执行
kotlinc
然后
kotlin
运行它对我来说都很好。
res2: kotlin.Boolean = true
res3: kotlin.Boolean = true
res4: kotlin.Boolean = true

[1, 2, 3, 4, 5, 6, 7, 8]



Checking Item 1
Checking Item 2
Checking Item 3
Checking Item 4
Checking Item 5
Checking Item 6
Checking Item 7
Checking Item 8

8