Optional.ifPresent
занимает Consumer
- поэтому вы не можете ничего с него вернуть. Используйте Optional.map
.
Optional.ofNullable(MyObject.getPeople())
.map(people -> people
.stream()
.filter(person -> person.getName().equals("test1"))
.findFirst()
.map(person -> person.getId()))
.orElse(null);
Лучше было бы использовать flatmap
и не возвращать ноль в конце (не рекомендуется присваивать null
необязательной переменной)
Optional.ofNullable(MyObject.getPeople())
.flatmap(people -> people
.stream()
.filter(person -> person.getName().equals("test1"))
.findFirst()
.map(person -> person.getId()));
Примечание: Ваше первое утверждение также немного странно. Если MyObject.getPeople
возвращает коллекцию, то нет необходимости оборачивать ее необязательным (если только возвращаемое значение не может быть null - но, опять же, рекомендуется не возвращать null когда типом возврата является Коллекция).