【问题标题】:How to apply a function to a list of lists如何将函数应用于列表列表
【发布时间】:2018-06-29 07:13:00
【问题描述】:

我知道 flatMap 操作,但不完全了解它的工作原理。

我有一堂课:

class Days() {
  List<Date> dates;
}

然后我有这些对象的列表

List<Days> month

我想对这个对象中的每个日期做一些事情(例如将它们转换为字符串),然后返回一个包含所有这些字符串的列表。

如何做到这一点?

【问题讨论】:

  • 您的 class Days 定义和您的 month 定义不是 Kotlin 定义。您是否尝试在 java 类上使用 flatMap?

标签: java kotlin flatmap


【解决方案1】:

如果 Days 类在 Kotlin 中,您可能不会使 dates 可以为空。 flatMap 调用可以使用一个简单的函数引用然后:

class Days(val dates: List<Date> = emptyList())

fun main(args: Array<String>) {
    val manyDays = listOf(Days(), Days())
    manyDays.flatMap(Days::dates).forEach(::println)
}

【讨论】:

    【解决方案2】:

    当然,我是在发布此内容后立即想到的,但我认为我应该把我的答案放在这里以防其他人发现。

    month.flatMap{
      it.dates ?: listOf<Days>() 
    }.map{
      //do your work on the objects here
    }
    

    【讨论】:

    • 使用it.dates.orEmpty()或至少it.dates ?: emptyList()
    猜你喜欢
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2021-07-28
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多