Я довольно новый Java-программист, и в настоящее время я изучаю потоки.Я пытаюсь использовать поток, чтобы взять зарплаты от каждого отдела и усреднить их.Я был в состоянии добавить зарплаты или усреднить их, но я не могу понять, как я буду делать это по отделам.Вот код, который у меня есть.
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
public class AverageSalariesDept {
public static void main(String[] args) {
Employee[] employees = {
new Employee("Jason", "Red", 5000, "IT"),
new Employee("Ashley", "Green", 7600, "IT"),
new Employee("Matthew", "Indigo", 3587.5, "Sales"),
new Employee("James", "Indigo", 4700.77, "Marketing"),
new Employee("Luke", "Indigo", 6200, "IT"),
new Employee("Jason", "Blue", 3200, "Sales"),
new Employee("Wendy", "Brown", 4236.4, "Marketing")};
List<Employee> list = Arrays.asList(employees);
Function<Employee, String> byDepartment = Employee::getDepartment;
Function<Employee, Double> bySalary = Employee::getSalary;
Comparator<Employee> compSalaries =
Comparator.comparing(byDepartment).thenComparing(bySalary);
list.stream()
.sorted(compSalaries)
.forEach(System.out::println);
System.out.printf("Average of Employees' salaries: %.2f%n",
list.stream()
.mapToDouble(Employee::getSalary)
.average()
.getAsDouble());
}
}