list - 在 Kotlin 中是否有比“双重平面映射”更简洁/可读的过滤方式?
问题描述
我有一个要过滤的对象列表,然后检索所有不同字符串的列表 2 层嵌套列表。例如,要获取第一个未过滤的结果,我可以这样做:
mainList[0].appliedTo!![0][0]
但是,我希望所有对象的最底层的所有这些字符串都在一个平面列表中。
我有一个解决方案,但绝对感觉不是最理想的:
val myListOfStrings = mainList // Start with an arraylist
.filter { it.insertAfter == true } // Filter the arraylist
.flatMap { it.appliedTo.orEmpty() } // Flatmap down to a List<List<String>>
.flatMap { it.orEmpty() } // Flatmap down to a List<String>
.distinct() // Unique values only
以下是数据结构在 Android Studio 评估器中的外观:
拥有这 4 个运算符似乎有些过分,我真的很想看看这两个flatMap
s 是否可以以某种方式结合起来。任何帮助表示赞赏,谢谢!
解决方案
推荐阅读
- apache-spark - 具有太大而无法放入内存的查找表的批处理作业 (Spark)
- python - python正则表达式回车
- python-3.x - 如何打开csv文件在每一行上拆分保存并关闭它
- git - git rm 即使没有 -f 也会删除物理文件
- c# - 加密 reactjs 上的数据并在 c# 应用程序中解密
- mongodb - 计算数组中的元素数量并为mongodb中集合的每个文档求和?
- r - 如何删除某些组元素的第一行?
- unity3d - 谷歌播放控制台“发生意外错误。请稍后再试。(4800403)”?
- swift - 如何修复“'?:'表达式中的结果值类型不匹配'”
- javascript - 如何检查 Firebase 中的数据搜索是否成功