Добавить в корзинуПозвонить
Найти в Дзене
DEBAGanov

Java 569. Написать код Java 8, чтобы получить средний возраст каждого отдела в организации?

Конечно, вот пример кода на Java 8 для получения среднего возраста каждого отдела в заданной организации: import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// создаем список сотрудников List<Employee> employees = new ArrayList<>();
employees.add(new Employee("John", "Smith", LocalDate.of(1990, 1, 1), "Sales"));
employees.add(new Employee("Jane", "Doe", LocalDate.of(1985, 2, 12), "Marketing"));
employees.add(new Employee("Bob", "Johnson", LocalDate.of(1988, 6, 3), "IT"));
employees.add(new Employee("Mary", "Williams", LocalDate.of(1983, 12, 31), "Sales"));
employees.add(new Employee("David", "Brown", LocalDate.of(1992, 8, 16), "IT"));
// используем метод collect() для разделения списка на группы по отделам Map<String, List<Employee>> departmentMap = employees.stream().collect(Collectors.groupingBy(Employee::getDe

Конечно, вот пример кода на Java 8 для получения среднего возраста каждого отдела в заданной организации:

import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;

public class Main {
public static void main(String[] args) {
// создаем список сотрудников
List<Employee> employees = new ArrayList<>();
employees.add(new Employee("John", "Smith", LocalDate.of(1990, 1, 1), "Sales"));
employees.add(new Employee("Jane", "Doe", LocalDate.of(1985, 2, 12), "Marketing"));
employees.add(new Employee("Bob", "Johnson", LocalDate.of(1988, 6, 3), "IT"));
employees.add(new Employee("Mary", "Williams", LocalDate.of(1983, 12, 31), "Sales"));
employees.add(new Employee("David", "Brown", LocalDate.of(1992, 8, 16), "IT"));

// используем метод collect() для разделения списка на группы по отделам
Map<String, List<Employee>> departmentMap = employees.stream().collect(Collectors.groupingBy(Employee::getDepartment));

// вычисляем средний возраст для каждого отдела
Map<String, Double> avgAgeByDepartment = departmentMap.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey,
entry -> entry.getValue().stream()
.mapToLong(emp -> LocalDate.now().until(emp.getBirthDate()).getYears())
.average().orElse(0.0)));

// выводим информацию о среднем возрасте каждого отдела System.out.println("Average age by department:");
avgAgeByDepartment.forEach((dept, avgAge) -> System.out.println(dept + ": " + avgAge));
}
}

class Employee {
private String firstName;
private String lastName;
private LocalDate birthDate;
private String department;

public Employee(String firstName, String lastName, LocalDate birthDate, String department) {
this.firstName = firstName;
this.lastName = lastName;
this.birthDate = birthDate;
this.department = department;
}

public String getFirstName() {
return firstName;
}

public String getLastName() {
return lastName;
}

public LocalDate getBirthDate() {
return birthDate;
}

public String getDepartment() {
return department;
}
}

В этом примере мы используем метод collect() для разделения списка employees на группы по отделам. Затем мы вычисляем средний возраст для каждого отдела, используя методы mapToLong() и average(). Если список сотрудников для данного отдела пуст, мы используем метод orElse(0.0) для возврата значения 0.

Наконец, мы выводим информацию о среднем возрасте каждого отдела, используя метод forEach().

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov