Hej
Ćwiczę sobie stream API z Javy.
Wymyśliłem sobie taki zadanie - mam listę Pracowników (Klasa Employee ma pola: String name, String surname, LocalDate birthDate, boolean hired, boolean male, Position position, private int salary) - ale to nie ważne (chodzi tylko o podgląd klasy.)
W tej liście jest kilkanaście osób. Chciałbym za pomocą API stream wyciągnąć imię kobiety, która ma największą pensję w firmie. Oto moje rozwiązanie:
String maxSalaryWomanName = employeeList.stream()
.filter(employee -> !employee.isMale())
.max(Comparator.comparing(Employee::getSalary))
.map(Employee::getName)
.get();
Jest ok, ale Intellij podkreśla że użycie get() z opcjonala [jak nie ma żadnej kobiety to jest wyjątek:/ ], bez sprawdzenia isPresent(). Można zrobić to jakoś lepiej? Staram się oglądać sporo przykładów z tego streamApi, bo czasem fajnie się przydaje do działań na kolekcjach, ale trochę nie rozumiem tych bardziej zaawansowanych "zapytań".