将可迭代对象收集到一个变量中(列表)

菲格尔

考虑一下:

  fun readFiles(directory: String): List<File> {
    val result = ArrayList<File>()

    File(directory).walkTopDown().forEach {
      result.addAll(getFiles(it))
    }

    return result
  }

  fun getFiles(file: File): List<File> { ... }

如何重写它以便我不需要初始化result ArrayList但可以直接return File(directory).walkTopDown().???

问题不在于读取文件或任何东西的最佳方式是什么,而在于如何在执行相同操作的同时更简洁地编写上述代码。

马斯特兰

您可以flatMap为此目的使用它首先Sequence使用您的映射函数将每个元素映射到 a (所以你有点得到 a Sequence<Sequence<File>>),然后它将每个结果展平回 a Sequence<File>

由于walkTopDown返回 a FileTreeWalk(它是 的子类Sequence<File>),而您返回 a List<File>,因此您还必须进行一些转换。如果您创建getFilesreadFiles返回 a ,则可以删除这些转换Sequence<File>

fun readFiles(directory: String): List<File> {
    return File(directory)
              .walkTopDown()
              .flatMap { getFiles(it).asSequence() }
              .toList()
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将可观察的分组排放物收集到一个列表中

CMake将文件内容列表从多个子模块收集到一个变量中

批量收集到一个UNION查询到对象表中

Java 8如何处理一个列表中的对象并将其收集到另一个列表中?

如何使用Java流将多个列表收集到一个列表中?

将 JSON 文件中的所有元素收集到一个列表中

将PySpark数据框过滤器的结果收集到一个变量中

如何在Python中将元组列表收集到一个元组中?

Java流将数组收集到一个列表中

Django Rest将多个记录收集到一个列表中

将具有多个属性的对象映射到另一个对象,然后收集到列表

如何将多行中的一个变量收集到现有表中的新变量中

如何将一个对象的两个字段收集到同一列表中?

如何将所有使用@RequestParam注释的字段收集到一个对象中

通过其值过滤Map对象,而无需将结果收集到另一个map中

Java流 - 应用两个过滤器,并收集到两个集合中的一个迭代

将多列收集到一个键和两个值中

从流收集到一个多重映射

是否可以将多个异常收集到一个自定义异常中?

将多行内容收集到一个输出中

是否可以将多个图像层收集到一个画布中?

每小时将EventLog收集到一个文件中

如何收集到地图中值形成一个列表时重复键在流,在Java 8

收集到可迭代

将三个ArrayList收集到一个并在自定义ListView中查看

如何将存储在 html 文件中的许多片段收集到 Django 中的一个模板中?

将可迭代对象链接到一个新对象中,但保留其类?

我正在构建一个 Windows 窗体应用程序。如何将我的应用程序中的所有数据网格视图收集到一个变量中?

将对象列表中的值收集到swift5中的字典中