You need to enable JavaScript to run this app. Kotlin中有没有比双重flatMapping更简洁可读的嵌套列表过滤方法?
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中有没有比双重flatMapping更简洁可读的嵌套列表过滤方法?

优化实现方案

你可以直接在单次flatMap中完成两层嵌套列表的拉平,合并后代码如下:

val myListOfStrings = mainList
    .filter { it.insertAfter == true }
    .flatMap { it.appliedTo.orEmpty().flatMap { innerList -> innerList.orEmpty() } }
    .distinct()

逻辑说明

  • 原写法的两次flatMap本质是先把所有appliedTo的二层嵌套列表展开,再把每个二层列表展开为字符串
  • 优化后的写法在处理每个外层元素时,直接完成该元素对应两层嵌套列表的拉平,再交给外层flatMap做全局展开,和原有逻辑完全等价,没有性能损耗,操作符数量从4个减少到3个。

如果你能确认二层列表元素(即appliedTo的子元素)非空,还可以用更简洁的flatten写法:

val myListOfStrings = mainList
    .filter { it.insertAfter == true }
    .flatMap { it.appliedTo.orEmpty().flatten() }
    .distinct()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 05:09:02