Я пытаюсь получить имя студента на основе его максимальных оценок, используя API потоков java8.
import static java.util.Arrays.asList;
public class Main {
public static void main(String args[]) {
new StudentReport(asList(
new StudentData("Rohit", asList(100, 81, 82, 83)),
new StudentData("Ram", asList(84, 85, 86, 87))));
}
}
import java.util.List;
public class StudentData {
private String name;
private List<Integer> marks;
StudentData(String name, List<Integer> marks) {
this.name = name;
this.marks = marks;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Integer> getMarks() {
return marks;
}
public void setMarks(List<Integer> marks) {
this.marks = marks;
}
}
import java.util.Comparator;
import java.util.List;
import java.util.stream.Stream;
public class StudentReport {
public StudentReport(List<StudentData> studentData)
{
printStudentNameWithMaxMarks(studentData);
}
private void printStudentNameWithMaxMarks(List<StudentData> studentData) {
// I am getting erro here.
studentData.stream().map(student -> student.getMarks())
.max(Comparator.comparing(Integer::intValue)).get();
}
}
Я хотел бы вернуть «Rohit» в выводе, потому что он набрал максимум 100 баллов.можно ли добиться в однопотоковой операции, сравнить все оценки и вернуть
new StudentData("Rohit", asList(100, 81, 82, 83)),
new StudentData("Ram", asList(84, 85, 86, 87))));
Заранее спасибо и благодарю за помощь.