From 793d975e2f0591177751f289dcc6f7533ddc9aeb Mon Sep 17 00:00:00 2001 From: Binary-Cat-01 Date: Sun, 11 Aug 2024 22:15:46 +0300 Subject: [PATCH 1/3] Add solution of lesson 58 (collection lambda param) task1 --- .../model/Department.java | 33 ++++++++++ .../model/Employee.java | 64 +++++++++++++++++++ .../task1/Main.java | 15 +++++ 3 files changed, 112 insertions(+) create mode 100644 src/com/walking/lesson58_collection_lamda_param/model/Department.java create mode 100644 src/com/walking/lesson58_collection_lamda_param/model/Employee.java diff --git a/src/com/walking/lesson58_collection_lamda_param/model/Department.java b/src/com/walking/lesson58_collection_lamda_param/model/Department.java new file mode 100644 index 000000000..553b12969 --- /dev/null +++ b/src/com/walking/lesson58_collection_lamda_param/model/Department.java @@ -0,0 +1,33 @@ +package com.walking.lesson58_collection_lamda_param.model; + +import java.util.List; + +public class Department { + private String name; + private int vacancyAmount; + private List employees; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getVacancyAmount() { + return vacancyAmount; + } + + public void setVacancyAmount(int vacancyAmount) { + this.vacancyAmount = vacancyAmount; + } + + public List getEmployees() { + return employees; + } + + public void setEmployees(List employees) { + this.employees = employees; + } +} diff --git a/src/com/walking/lesson58_collection_lamda_param/model/Employee.java b/src/com/walking/lesson58_collection_lamda_param/model/Employee.java new file mode 100644 index 000000000..78ec6137b --- /dev/null +++ b/src/com/walking/lesson58_collection_lamda_param/model/Employee.java @@ -0,0 +1,64 @@ +package com.walking.lesson58_collection_lamda_param.model; + +import java.util.Objects; + +public class Employee { + private String name; + private boolean isMale; + private String position; + private int age; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isMale() { + return isMale; + } + + public void setMale(boolean male) { + isMale = male; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + Employee employee = (Employee) o; + return isMale == employee.isMale && age == employee.age && Objects.equals(name, + employee.name); + } + + @Override + public int hashCode() { + int result = Objects.hashCode(name); + result = 31 * result + Boolean.hashCode(isMale); + result = 31 * result + age; + return result; + } +} diff --git a/src/com/walking/lesson58_collection_lamda_param/task1/Main.java b/src/com/walking/lesson58_collection_lamda_param/task1/Main.java index 623075fa2..068601fc0 100644 --- a/src/com/walking/lesson58_collection_lamda_param/task1/Main.java +++ b/src/com/walking/lesson58_collection_lamda_param/task1/Main.java @@ -1,5 +1,11 @@ package com.walking.lesson58_collection_lamda_param.task1; +import com.walking.lesson58_collection_lamda_param.model.Employee; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * Используя классы из практики к уроку 57, * реализуйте метод, принимающий на вход список сотрудников и возвращающий @@ -8,4 +14,13 @@ public class Main { public static void main(String[] args) { } + + public static Map getOldestEmployeeByName(List employees) { + Map employeeMap = new HashMap<>(); + + employees.forEach( + e -> employeeMap.merge(e.getName(), e, (oldE, newE) -> oldE.getAge() < newE.getAge() ? newE : oldE)); + + return employeeMap; + } } \ No newline at end of file From 5b64b14aed5d3665ca59d6a942296420fbb3bdf7 Mon Sep 17 00:00:00 2001 From: Binary-Cat-01 Date: Sun, 11 Aug 2024 22:28:04 +0300 Subject: [PATCH 2/3] Add solution of lesson 58 (collection lambda param) task2 --- .../task2/Main.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/com/walking/lesson58_collection_lamda_param/task2/Main.java b/src/com/walking/lesson58_collection_lamda_param/task2/Main.java index 0da8d489a..381a7fb42 100644 --- a/src/com/walking/lesson58_collection_lamda_param/task2/Main.java +++ b/src/com/walking/lesson58_collection_lamda_param/task2/Main.java @@ -1,5 +1,12 @@ package com.walking.lesson58_collection_lamda_param.task2; +import com.walking.lesson58_collection_lamda_param.model.Employee; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * Используя классы из практики к уроку 57, реализуйте метод, * принимающий на вход список сотрудников и возвращающий список обладателей каждого имени. @@ -7,4 +14,13 @@ public class Main { public static void main(String[] args) { } + + public static Map> getAllEmployeesByName(List employees) { + Map> employeeMap = new HashMap<>(); + + employees.forEach(e -> employeeMap.computeIfAbsent(e.getName(), k -> new ArrayList<>()) + .add(e)); + + return employeeMap; + } } \ No newline at end of file From ebba3b1942a54f2fe4d3d6fbbc6dfdbd13211dc7 Mon Sep 17 00:00:00 2001 From: Binary-Cat-01 Date: Sun, 11 Aug 2024 22:44:10 +0300 Subject: [PATCH 3/3] Add solution of lesson 58 (collection lambda param) task3 --- .../task3/Main.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/com/walking/lesson58_collection_lamda_param/task3/Main.java b/src/com/walking/lesson58_collection_lamda_param/task3/Main.java index 844889f15..79b87d714 100644 --- a/src/com/walking/lesson58_collection_lamda_param/task3/Main.java +++ b/src/com/walking/lesson58_collection_lamda_param/task3/Main.java @@ -1,5 +1,11 @@ package com.walking.lesson58_collection_lamda_param.task3; +import com.walking.lesson58_collection_lamda_param.model.Employee; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * Используя классы из практики к уроку 57, реализуйте метод, * принимающий на вход список сотрудников и возвращающий суммарный возраст обладателей каждого имени. @@ -8,4 +14,12 @@ public class Main { public static void main(String[] args) { } + + public static Map getSumAgeEmployeesByName(List employees) { + Map employeeMap = new HashMap<>(); + + employees.forEach(e -> employeeMap.compute(e.getName(), (k, v) -> v == null ? e.getAge() : v + e.getAge())); + + return employeeMap; + } } \ No newline at end of file