Java Kotlin:从for循环中的内部类创建所有日期的列表。从日期列表中查找最新日期
我有一个数据类,外部类有一个内部类的列表。我需要根据内部类中可用的日期创建一个日期列表Java Kotlin:从for循环中的内部类创建所有日期的列表。从日期列表中查找最新日期,java,kotlin,Java,Kotlin,我有一个数据类,外部类有一个内部类的列表。我需要根据内部类中可用的日期创建一个日期列表 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 c
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
)
数据类学院(
val id:Int,
瓦尔·伊索本:布尔,
val类:列表?
)
数据类(
val id:Int,
val name:String,
学生:名单?
)
数据类学生(
val id:Int,
val名称:字符串?,
val接纳日期:日期,
val出生日期:日期
)
我想创建所有admissionDate的列表,从列表中查找最新的admissionDate
我应该如何从上述数据类创建admissionDate列表。
我有1个学院->2个班->每个班2个学生->每个学生都有录取日期
最后,新创建的列表将总共包含4个日期对象,并从列表中查找最早的日期。日期大部分被弃用。您应该切换到类似LocalDate的内容。但是,即使在您切换到不同的日期类型的类之后,下面的操作也应该有效 我还建议不要使用
Class
作为类名,因为Class
已经是一个标准的库Java类。它极有可能在使用时造成困难
您希望使用flatMap
创建每个类中列表内容的列表。但是首先使用.orEmpty()
,这样就不必处理它的可空性
出于同样的原因,您也可以在内部学生列表中使用orEmpty()
然后将学生映射到他们的入学日期,将学生列表转换为入学日期列表
然后您可以在列表中调用min()
,以获取最早的日期(因为日期是可比较的)
编辑:在Java中:
List dates=Optional.ofNullable(college.getClasses()).orElse(Collections.emptyList())
.stream()
.flatMap(cls->Optional.ofNullable(cls.getStudents()).orElse(Collections.emptyList()).stream())
.map(学生::获取录取日期)
.collect(Collectors.toList());
LocalDate earliestDate=dates.stream().min(Comparator.naturalOrder()).orElse(null);
谢谢Tenfour04我肯定不使用类作为类名:)我的类不同。在我的问题中,我只是嘲弄了一下。这很好用。您好@Tenfour04您能帮我介绍一下如何在java上实现这一点吗?我添加了一个java示例。我不太使用Java流,所以我不知道它是否可以更优雅@Prashant.J
val dates = college.classes.orEmpty()
.flatMap { it.students.orEmpty() }
.map { it.admissionDate }
val earliestDate = dates.min()