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

Kotlin查找嵌套列表匹配元素时List与Sequence的效率对比咨询

Kotlin嵌套List筛选的性能对比和优化方案

现有代码的性能基础

你当前的实现本身已经用到了短路求值逻辑,没有多余遍历开销:

  • 外层find只要匹配到第一个符合条件的外层元素就会立即终止遍历,不会遍历剩余外层元素
  • 内层any只要匹配到第一个符合条件的内层元素就会立即终止内层遍历,不会遍历剩余内层元素

List和Sequence的选型结论

  • 中小数据量场景(外层元素<1000、单内层元素<100):直接用现有List实现即可。这种场景下Sequence创建迭代器、懒加载调度的开销反而会高于普通List遍历,内存消耗也没有明显差异。
  • 超大数据量场景(外层元素过万、单内层元素过千):可以尝试改用Sequence,但性能提升幅度有限。因为你当前的操作只有find一个终端操作,没有filter/map这类会生成中间集合的链式中间操作,Sequence懒加载减少中间集合的优势发挥不出来,和普通List的性能差异基本在10%以内。

代码可读性优化建议

现有代码的空判断可以简化,逻辑等价的前提下代码更简洁:

currentItem = outerList?.firstOrNull { outer ->
    outer.items.orEmpty().any { item ->
        item.isVisible == visibility && item.progress == currentProgress
    }
}
// 后续逻辑直接根据currentItem是否为null分支即可,无需嵌套let+run

orEmpty()会把null的内层集合转为空集合,空集合执行any默认返回false,不需要额外判断isNullOrEmpty。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:54:07