gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:39:14 28 4
gpt4 key购买 nike

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

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。

我应该如何从上面的数据类创建admissionDate列表。我有 1 所学院 -> 2 个类(class) -> 每个类(class) 2 名学生 -> 每个学生都有录取日期

最后,新创建的List共有4个日期对象,并从List中找到最早的日期。

最佳答案

日期大部分已被弃用。您应该切换到 LocalDate 之类的东西。但即使您切换到不同的日期类型的类后,以下内容也应该有效。

我还建议不要使用Class作为类名,因为Class已经是标准库Java类。它很可能会造成使用困难。

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

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

然后将学生映射到其入学日期,将学生列表转换为入学日期列表。

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

val dates = college.classes.orEmpty()
.flatMap { it.students.orEmpty() }
.map { it.admissionDate }
val earliestDate = dates.min()

编辑:在 Java 中:

List<LocalDate> dates = Optional.ofNullable(college.getClasses()).orElse(Collections.emptyList())
.stream()
.flatMap(cls -> Optional.ofNullable(cls.getStudents()).orElse(Collections.emptyList()).stream())
.map(Student::getAdmissionDate)
.collect(Collectors.toList());
LocalDate earliestDate = dates.stream().min(Comparator.naturalOrder()).orElse(null);

关于java - Kotlin:在 for 循环中创建内部类中所有日期的列表。从日期列表中查找最新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61490063/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com