Wpis z mikrobloga

Mireczki od javy 8+
Mam sobie service WypokService za pomocą którego pobieram obiekt Optional, który zawiera zbiór Set i teraz chcę zwrócić zbiór użytkowników, którzy mają pole activeuser=true, nie czepiajcie się implementacji, wymyśliłem to na potrzeby streamow
jak to zrobić streamami? bo ten optional przy wypoku mi troche miesza

zaczalem tak:
Set users = WypokService.getWypokById(id).map(wypok -> wypok.getUsers).orElse(new HashSet<>());
to mi zwraca liter userow, ale bez filtra, niestety nie udaje mi sie tego filtra wrzucic do srodka bo map zwraca Seta, a chcialem sie od razu przeliterowac po nim...

musialoby byc cos takiego:
.map(wypok -> wypok.getUsers).filter(users -> {
//iterowanie po secie

#java #naukaprogramowania
  • 5
@famir96: też byś mógł. Zależnie od specyfikacji funkcji get users mógłbyś też może pozbyć się tego or else.
Co do zasady pamiętaj że collect to na samym końcu trzeba wołać żeby stream spełniał swoją funkcję
zaczalem tak:

Set users = WypokService.getWypokById(id).map(wypok -> wypok.getUsers).orElse(new HashSet<>());


@famir96: Jak dostajesz Optional, to .get().orElse(new HashSet<>), pozbyłeś się Optionala, masz już 'czysty set', więc jedziesz .stream na nim .map, a później .filter.