You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala for循环遍历元组集合后集合变空无输出如何解决

问题原因

你调用的combinations方法返回的类型是Iterator[List[Int]],迭代器是只能遍历一次的消耗型资源,只要调用过遍历类方法(包括size、foreach等),遍历结束后迭代器就会被清空,无法重复读取。

你的代码执行顺序实际上是:

  • 第一次执行println(params.size)时,就已经遍历了整个迭代器计算长度,执行完成后迭代器已经为空
  • 后续for循环遍历的是空迭代器,自然没有任何输出
  • 最后再次调用params.size,空迭代器的长度就是0

修复方案

如果需要多次使用组合结果,把迭代器转换为普通的持久化集合缓存结果即可,比如转成List:

val primes = List(11, 13, 17, 19, 2, 3, 5, 7)
val params = primes.combinations(2).toList // 加toList转成普通集合
println(params.size)

for (param <- params) {
  print(param(0), param(1))
}
println(params.size)

修改后两次打印的size都会是28,for循环也会正常输出所有元素。


内容的提问来源于stack exchange,提问作者super_nova_Utah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:36:09