【发布时间】:2020-02-21 06:51:45
【问题描述】:
我有一个如下的数据结构:
Map<StudentStatus, TreeMap<Integer, Student>> map = new HashMap<>();
我可以要求像 PHD 这样的学生身份,它会给我一个整数到学生对象的 TreeMap。这个TreeMap 将学生 ID 作为键,将 Student 对象作为值。
public enum StudentStatus {
UNDERGRAD,
POSTGRAD,
PHD;
}
public class Student {
public String name;
public int age;
}
public class StudentDetails {
public int id;
public StudentStatus studentStatus;
public String name;
}
现在我想做的是,按年龄获取最年轻的学生,换句话说,搜索嵌套地图,并从该学生创建一个 StudentDetails 对象。 所以我需要前两张地图的钥匙。第一个键是 StudentStatus,第二个键是 Student id。
最后我需要一个这样的对象:
new StudentDetails(id: 36, studentStatus: StudentStatus.PHD, name: "Anil");
我找不到在流式传输时存储这些密钥并在单个语句中使用 Java 8 Stream 创建最终对象的方法。
我用Student类比简化了问题,也许对上述问题使用这样的结构没有多大意义,但在我的例子中确实如此。
【问题讨论】:
-
StudentEnum或StudentStatus? -
刚刚修好了。谢谢。
-
您可以将学生年龄添加到
StudentDetails班级作为成员吗?
标签: java dictionary java-8 java-stream