我有一个数据类,而外部类具有内部类的列表。我需要从内部类中可用的日期创建日期列表。
data class College(
val id: Int,
val isOpen: Boolean,
val classes: List<Class>?
)
data class Class(
val id: Int,
val name: String,
val students: List<Student>?
)
data class Student(
val id: Int,
val name: String?,
val admissionDate: Date,
val birthDate: Date
)
我想创建所有admissionDate的列表以从列表中找到最新的admissionDate。
我应该如何从上述数据类创建接纳日期列表。我有1所大学-> 2个班级->每个班级有2个学生->每个学生都有录取日期
最后,新创建的列表将共有4个日期对象,并从列表中找到最早的日期。
日期大部分已弃用。您应该切换到类似LocalDate的名称。但是即使您切换到其他日期类型的班级,以下内容也应该起作用。
我也建议不要使用Class
作为类名,因为Class
已经是标准库Java类。使用它的可能性很高。
您想使用flatMap
创建每个类中列表内容的列表。但是首先使用.orEmpty()
,这样您就不必处理它的可空性。
出于同样的原因,您也可以在内部学生列表中使用orEmpty()
。
然后将学生映射到他们的录取日期,以将学生列表转换为录取日期列表。
然后您可以调用列表中的min()
以获取最早的日期(因为日期是可比较的。)>
val dates = college.classes.orEmpty()
.flatMap { it.students.orEmpty() }
.map { it.admissionDate }
val earliestDate = dates.min()