Я бы хотел отобразить поток Stream<Car>
на карту, например Map<String, List<Car<StudentInGroup>>>
, где Car
класс такой:
public class Car<T> {
Optional<T> studentInGroup;
public Car()
{
}
public Optional<T> getStudentInGroup() {
return studentInGroup;
}
public void setStudentInGroup(T studentInGroup) {
this.studentInGroup=Optional.of(studentInGroup);
}
}
, а StudentInGroup
-
public class StudentInGroup {
private String name;
private boolean isGirl;
private int age;
}
Итак, я хотел бы построить карту на основе поля имени StudenInGroup
, это Optional<StudentInGroup>
внутри автомобиля не Optional.empty()
, в то время как я хотел бы заменить его на "none", еслив определенном коте поле studentIngroup равно Optional.empty()
.
Map<String, List<Car<StudentInGroup>>> stringStudentInGroupMap38= studentInGroupStreamSupplier.get().map((StudentInGroup studentInGroup)->{Car<StudentInGroup> car=new Car<StudentInGroup>();car.setStudentInGroup(studentInGroup);return car;}).collect(Collectors.groupingBy(car->car.getStudentInGroup().orElseGet(... do something with student there).getName())
Возможное решение состоит в том, чтобы создать «none with StudentInGroup», в котором getName вернет требуемые данные, хотя это не похоже направильный подход.однако <я не нашел способа сохранить исходный <code>Stream<Car> без сопоставления его с некоторыми другими потоками и принудительной группировки в Car.StudentInGroup.Name или «none», если Optional<StudenInGroup>
пусто.Любые предложения, чтобы код был понятным и читабельным, приветствуются!