Hej,
Pytanie z zakresu podstawowego, ale nie mogę sobie poradzić.
Mam listę i wyszukuję jeden element po warunku:
List<Person> persons ....
persons.stream().filter(p-> p.id == givenId).findAny();
Chciałbym ten element użyć do dalszych obliczeń. Tzn. mam metodę:
int calculate(Person person)
Najchętniej bym to ją wywołał tak:
persons.stream().filter(p-> p.id == givenId).findAny().ifPresent(p2 -> calculate(p2));
Tylko nie wiem gdzie zapisać rezultat zwracany z calculate. Chciałbym, żeby był zapisany w zmiennej lokalnej, ale tak się nie da.
Alternatywą jest wywołanie:
Optional<Person> p = persons.stream().filter(p-> p.id==givenId).findAny();
if (p.isPresent()) {
local = calculate(p.get());
}
Ale tego drugiego rozwiązania chcę uniknąć. Wydaje się być mało zgrabne i niczym nie różni się od null checka.