Kotlin:从for循环中的内部类创建所有日期的列表。从日期列表中找到最新日期

问题描述 投票:0回答:1

我有一个数据类,而外部类具有内部类的列表。我需要从内部类中可用的日期创建日期列表。

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个日期对象,并从列表中找到最早的日期。

java kotlin
1个回答
1
投票

日期大部分已弃用。您应该切换到类似LocalDate的名称。但是即使您切换到其他日期类型的班级,以下内容也应该起作用。

我也建议不要使用Class作为类名,因为Class已经是标准库Java类。使用它的可能性很高。

您想使用flatMap创建每个类中列表内容的列表。但是首先使用.orEmpty(),这样您就不必处理它的可空性。

出于同样的原因,您也可以在内部学生列表中使用orEmpty()

然后将学生映射到他们的录取日期,以将学生列表转换为录取日期列表。

然后您可以调用列表中的min()以获取最早的日期(因为日期是可比较的。)>

val dates = college.classes.orEmpty()
    .flatMap { it.students.orEmpty() }
    .map { it.admissionDate }
val earliestDate = dates.min()
© www.soinside.com 2019 - 2024. All rights reserved.