Cześć
Prosiłbym o wskazówki do rozwiązania zadania z metodami.
Mam stworzyc klase EmployeeService w ktorej kazda z metod pobiera liste employow jako argument
- metoda, która zwraca pracownika co najwiecej zarabia w podanym jako 2gi argument miescie - lub rzuca wyjatek jesli nie ma zadnego pracownika w danym miescie
- metoda, która zwraca miasto (String) w ktorym jest najwiecej pracownikow.
ad 1 W tej metodzie chciałem rzucić customowy wyjątek Optionalem orElseThrow, ale dostaję informację że nie da radę zrobić tego Mapując
ad 2 W tej metodzie również pojawia się błąd.
Proszę rzucić okiem gdzie popełniam błędy
Stworzyłem klasę Employee, klasę Runner z listą pracowników, klasę customowego wyjątku i klasę EmolyeeService gdzie mieszczą się metody
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.function.BinaryOperator;
import java.util.stream.Collectors;
public class EmployeeService {
public Employee biggestSalaryEmployeeInTheCity(List<Employee> employeeList) throws NoEmployeeInCityException {
return Optional.ofNullable(employeeList)
.orElseGet(ArrayList::new)
.stream()
.collect(Collectors.toMap(e -> e.getCity(), e -> e, BinaryOperator.maxBy(Comparator.comparingDouble(e -> e.getSalary()))))
.orElseThrow(() -> new NoEmployeeInCityException("No employee found"));
}
public String cityMostEmployees(List<Employee> employeeList) {
return employeeList.stream()
.max(Comparator.comparingDouble(Employee::getCity))
.orElse(null);
}
public class Runner {
public static void main(String[] args) throws NoEmployeeException {
List<Employee> employees = new ArrayList<>();
employees.add(new Employee("Adam", "Nowak", "12345678999", 10_000.0D, "Programmer", "Warsaw"));
employees.add(new Employee("Robert", "Puczyk", "09876543212", 12_000.0D, "Programmer", "Warsaw"));
employees.add(new Employee("Anna", "Kwiatkowska", "65748345327", 13_000.0D, "Manager", "Poznan"));
employees.add(new Employee("Franciszek", "Lasek", "23456569995", 9_000.0D, "Tester", "Poznan"));
employees.add(new Employee("Roman", "Kowalski", "23226569995", 12_000.0D, "Programmer", "Poznan"));