Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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<Employee> 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<Employee> getEmployees() {
return employees;
}

public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
15 changes: 15 additions & 0 deletions src/com/walking/lesson58_collection_lamda_param/task1/Main.java
Original file line number Diff line number Diff line change
@@ -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,
* реализуйте метод, принимающий на вход список сотрудников и возвращающий
Expand All @@ -8,4 +14,13 @@
public class Main {
public static void main(String[] args) {
}

public static Map<String, Employee> getOldestEmployeeByName(List<Employee> employees) {
Map<String, Employee> employeeMap = new HashMap<>();

employees.forEach(
e -> employeeMap.merge(e.getName(), e, (oldE, newE) -> oldE.getAge() < newE.getAge() ? newE : oldE));
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

как будто через compute() проще


return employeeMap;
}
}
16 changes: 16 additions & 0 deletions src/com/walking/lesson58_collection_lamda_param/task2/Main.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,26 @@
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, реализуйте метод,
* принимающий на вход список сотрудников и возвращающий список обладателей каждого имени.
*/
public class Main {
public static void main(String[] args) {
}

public static Map<String, List<Employee>> getAllEmployeesByName(List<Employee> employees) {
Map<String, List<Employee>> employeeMap = new HashMap<>();

employees.forEach(e -> employeeMap.computeIfAbsent(e.getName(), k -> new ArrayList<>())
.add(e));

return employeeMap;
}
}
14 changes: 14 additions & 0 deletions src/com/walking/lesson58_collection_lamda_param/task3/Main.java
Original file line number Diff line number Diff line change
@@ -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, реализуйте метод,
* принимающий на вход список сотрудников и возвращающий суммарный возраст обладателей каждого имени.
Expand All @@ -8,4 +14,12 @@
public class Main {
public static void main(String[] args) {
}

public static Map<String, Integer> getSumAgeEmployeesByName(List<Employee> employees) {
Map<String, Integer> employeeMap = new HashMap<>();

employees.forEach(e -> employeeMap.compute(e.getName(), (k, v) -> v == null ? e.getAge() : v + e.getAge()));

return employeeMap;
}
}