Самый простой способ - просто проверить:
List<Student> getStudentWithSameGrade(List<Student> students, Grade grade) {
List<Student> students = students.stream().filter(s -> s.getGradeId().equals(grade.getGid())).collect(Collectors.toList());
if (students.isEmpty()) throw new EntityNotFoundException(ENTITY_NOT_FOUND);
else return students;
}
Если вам действительно нужно придерживаться потокового API, вы можете определить свой собственный сборщик:
public static <T> Collector<T, ?, T> toNonEmptyList() {
return Collectors.collectingAndThen(
Collectors.toList(),
list -> {
if (list.isEmpty()) {
throw new IllegalStateException();
}
return list;
}
);
}
А потом:
return students.stream()
.filter(s -> s.getGradeId().equals(grade.getGid()))
.collect(toNonEmptyList());