Java 如何将函数应用于列表列表

Java 如何将函数应用于列表列表,java,kotlin,flatmap,Java,Kotlin,Flatmap,我知道flatMap操作,但不完全理解它是如何工作的 我有一门课: class Days() { List<Date> dates; } 上课天数(){ 列出日期; } 然后我有一个这些对象的列表 List<Days> month 列出月份 我想对这个对象中的每个日期做点什么(例如,将它们转换为字符串),然后返回一个包含所有这些字符串的列表 人们会怎么做呢?当然,我在发布这篇文章后马上想到了这一点,但我想我应该把我的答案放在这里,以防其他人发现这一点 mont

我知道flatMap操作,但不完全理解它是如何工作的

我有一门课:

class Days() {
  List<Date> dates;
}
上课天数(){
列出日期;
}
然后我有一个这些对象的列表

List<Days> month
列出月份
我想对这个对象中的每个日期做点什么(例如,将它们转换为字符串),然后返回一个包含所有这些字符串的列表


人们会怎么做呢?

当然,我在发布这篇文章后马上想到了这一点,但我想我应该把我的答案放在这里,以防其他人发现这一点

month.flatMap{
  it.dates ?: listOf<Days>() 
}.map{
  //do your work on the objects here
}
month.flatMap{
it.dates?:listOf()
}.地图{
//在这里对对象进行处理
}

如果
课在科特林,你可能不会将
日期
设为空。
flatMap
调用可以使用一个简单的函数引用,然后:

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

fun main(args: Array<String>) {
    val manyDays = listOf(Days(), Days())
    manyDays.flatMap(Days::dates).forEach(::println)
}
classdays(val日期:List=emptyList())
趣味主线(args:Array){
val manyDays=listOf(Days(),Days())
manyDays.flatMap(Days::dates).forEach(::println)
}

您的
上课天数
定义和
月份
定义不是Kotlin定义。您是否试图在java类上使用flatMap?请使用
it.dates.orEmpty()
或至少
it.dates?:emptyList()