Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Kotlin:从for循环中的内部类创建所有日期的列表。从日期列表中查找最新日期_Java_Kotlin - Fatal编程技术网

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()