Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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 从包含另一个列表的列表中获取元素_Java_Stream - Fatal编程技术网

Java 从包含另一个列表的列表中获取元素

Java 从包含另一个列表的列表中获取元素,java,stream,Java,Stream,我使用java进行了以下配置: Student { private List<Note> notes; } Note { private int value; // Constructor - getters - setters } School { Private List<Student> students; // Constructor - getters - setters } 我想管理一个包含学校列表的对象,如下所示: Mana

我使用java进行了以下配置:

Student {
   private List<Note> notes;
}

Note {
   private int value;

   // Constructor - getters - setters
}

School {
   Private List<Student> students;

// Constructor - getters - setters
}
我想管理一个包含学校列表的对象,如下所示:

Manage {
   private List<School> schools;
}
管理{
私立学校名单;
}
我想找一所学校,那里有高音符的学生

在这个例子中:结果将是S3,因为我们有一个学生的注释19较高


如何使用Java Stream实现此行为?

您可以创建一个
,该流包含所有
学校
学生
对,然后找到具有最大值的
学生
的条目

为此,我建议添加到
Student
class a
getMaxValue()
方法,该方法将返回所有
Student
s
Note
s的最大值

Optional<School> school =
    schools.stream()
           .flatMap(sc -> sc.getStudents()
                            .stream()
                            .map(st -> new SimpleEntry<>(sc,st)))
           .collect(Collectors.maxBy(Comparator.comparing(e -> e.getValue().getMaxValue())))
           .map(Map.Entry::getKey);
选修学校=
学校.溪流()
.flatMap(sc->sc.getStudents()
.stream()
.map(st->new SimpleEntry(sc,st)))
.collect(Collectors.maxBy(Comparator.comparing(e->e.getValue().getMaxValue()))
.map(map.Entry::getKey);

你从哪里获得学校名称?我只想通过使用学生对象和注释筛选学校,从学校列表中获取学校名称。到目前为止,你尝试了什么?我尝试使用对象之间的比较和其他方法,但无法获得学校名称。最后,我使用地图获得了学校名称。非常感谢!
Optional<School> school =
    schools.stream()
           .flatMap(sc -> sc.getStudents()
                            .stream()
                            .map(st -> new SimpleEntry<>(sc,st)))
           .collect(Collectors.maxBy(Comparator.comparing(e -> e.getValue().getMaxValue())))
           .map(Map.Entry::getKey);