From 1922a2e19244f3e0ecd00fc699b64af2c68808c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D1=8F=D1=87=D0=B5=D1=81=D0=BB=D0=B0=D0=B2=20=D0=A2?= =?UTF-8?q?=D0=B8=D1=85=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Sat, 10 Sep 2022 22:27:46 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=9A=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=20?= =?UTF-8?q?=D0=94=D0=97=20=D0=91=D0=B0=D0=B7=D0=BE=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=81=D0=BB=D0=BE=D0=B6=D0=BD=D0=BE=D1=81=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ru/skypro/Employee.java | 67 +++++++++++++++++++++++++++++++++++++ src/ru/skypro/Main.java | 50 ++++++++++++++++++++++++++- 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 src/ru/skypro/Employee.java diff --git a/src/ru/skypro/Employee.java b/src/ru/skypro/Employee.java new file mode 100644 index 0000000..de139bc --- /dev/null +++ b/src/ru/skypro/Employee.java @@ -0,0 +1,67 @@ +package ru.skypro; +//@Getter +public class Employee { + private static int counter; + private final Integer id; + private final String firstName; + private final String lastName; + private final String secondName; + //@Setter + private String department;//1-5 + //@Setter + private Integer salary; + + public Employee(final String firstName, final String lastName, final String secondName, final String department, final Integer salary){ + this.id = counter++; + this.firstName = firstName; + this.lastName = lastName; + this.secondName = secondName; + this.department = department; + this.salary = salary; + } + + // Alt+Insert generated && modified to JSON output + @Override + public String toString() { + return "{" + + "\"ИД\":" + id + + ", \"Фамилия\":\"" + lastName + '\"' + + ", \"Имя\":\"" + firstName + '\"' + + ", \"Отчество\":\"" + secondName + '\"' + + ", \"Отдел\":\"" + department + '\"' + + ", \"Зарплата\":" + salary + + "}"; + } + + public Integer getId() { + return id; + } + + public String getFirstName() { + return firstName; + } + + public String getLastName() { + return lastName; + } + + public String getSecondName() { + return secondName; + } + + public String getDepartment() { + return department; + } + + public void setDepartment(String department) { + this.department = department; + } + + public Integer getSalary() { + return salary; + } + + public void setSalary(Integer salary) { + this.salary = salary; + } +} diff --git a/src/ru/skypro/Main.java b/src/ru/skypro/Main.java index 625884e..3449855 100644 --- a/src/ru/skypro/Main.java +++ b/src/ru/skypro/Main.java @@ -1,7 +1,55 @@ package ru.skypro; +import java.util.Arrays; +import java.util.stream.Collectors; + public class Main { - public static void main(String[] args){ + static Employee[] eployies = new Employee[10]; + public static void init(){ + for (int i = 0; i < 10; i++) { + eployies[i] = new Employee( + "И." + i, "Ф." + i, "О." + i, + String.valueOf(1 + (int) i / 2), + 100000 + (int) (Math.random() * 100000)); + } + } + public static String getAllEmployies(){ + return "["+Arrays.stream(eployies).map(Employee::toString).collect(Collectors.joining(",\n"))+"]"; + } + + public static Integer getSumSalaries(){ + return Arrays.stream(eployies).map(Employee::getSalary).reduce(Integer::sum).orElseThrow(); + } + + public static Employee getEmployeeWithMinSalary(){ + return Arrays.stream(eployies).reduce((e1,e2)->e1.getSalary()e1.getSalary()>e2.getSalary()?e1:e2).orElseThrow(); + } + public static Double getAvgSalaries(){ + return (double) getSumSalaries()/eployies.length; + } + + public static String listNamesOfAllEmployies(){ + return "["+Arrays.stream(eployies).map( + (e)-> + "{"+ + "\"Фамилия\":\"" + e.getLastName() + '\"' + + ", \"Имя\":\"" + e.getFirstName() + '\"' + + ", \"Отчество\":\"" + e.getSecondName() + "\"}" + ).collect(Collectors.joining(",\n"))+"]"; + } + public static void main(String[] args) { + init(); + //Basic difficult + System.out.println("Список всех сотрудников со всеми имеющимися по ним данными: "+getAllEmployies()); + System.out.println("Сумма затрат на зарплаты в месяц: "+getSumSalaries()); + System.out.println("Сотрудник с минимальной зарплатой: "+getEmployeeWithMinSalary()); + System.out.println("Сотрудник с максимальной зарплатой: "+getEmployeeWithMaxSalary()); + System.out.println("Среднее значение зарплат: "+getAvgSalaries()); + System.out.println("Ф. И. О. всех сотрудников: "+listNamesOfAllEmployies()); + } + } From 6db2d2449f04bc717cd19d2e91c457d5f2e60b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D1=8F=D1=87=D0=B5=D1=81=D0=BB=D0=B0=D0=B2=20=D0=A2?= =?UTF-8?q?=D0=B8=D1=85=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Sat, 10 Sep 2022 23:02:08 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=9A=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=20?= =?UTF-8?q?=D0=94=D0=97=20=D0=9F=D0=BE=D0=B2=D1=8B=D1=88=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=81=D0=BB=D0=BE=D0=B6=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ru/skypro/Main.java | 69 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/src/ru/skypro/Main.java b/src/ru/skypro/Main.java index 3449855..ddc76ad 100644 --- a/src/ru/skypro/Main.java +++ b/src/ru/skypro/Main.java @@ -1,6 +1,7 @@ package ru.skypro; import java.util.Arrays; +import java.util.Objects; import java.util.stream.Collectors; public class Main { @@ -41,6 +42,58 @@ public static String listNamesOfAllEmployies(){ ", \"Отчество\":\"" + e.getSecondName() + "\"}" ).collect(Collectors.joining(",\n"))+"]"; } + + public static void salaryIndex(Integer percent){ + Arrays.stream(eployies).forEach((e)->e.setSalary(e.getSalary()+e.getSalary()*percent/100)); + } + + public static Employee getEmployeeWithMinSalaryInDepartment(String department){ + return Arrays.stream(eployies).filter(e-> Objects.equals(e.getDepartment(), department)).reduce((e1, e2)->e1.getSalary() Objects.equals(e.getDepartment(), department)).reduce((e1,e2)->e1.getSalary()>e2.getSalary()?e1:e2).orElseThrow(); + } + public static Integer getSumSalariesInDepartment(String department){ + return Arrays.stream(eployies).filter(e-> Objects.equals(e.getDepartment(), department)).map(Employee::getSalary).reduce(Integer::sum).orElseThrow(); + } + public static Double getAvgSalariesInDepartment(String department){ + return (double) getSumSalariesInDepartment(department)/Arrays.stream(eployies).filter(e-> Objects.equals(e.getDepartment(), department)).count(); + } + public static void salaryIndexInDepartment(String department, Integer percent){ + Arrays.stream(eployies).filter(e-> Objects.equals(e.getDepartment(), department)).forEach((e)->e.setSalary(e.getSalary()+e.getSalary()*percent/100)); + } + public static String listNamesOfEmployiesInDepartment(String department){ + return "["+Arrays.stream(eployies).filter(e-> Objects.equals(e.getDepartment(), department)).map( + (e)-> + "{"+ + "\"Фамилия\":\"" + e.getLastName() + '\"' + + ", \"Имя\":\"" + e.getFirstName() + '\"' + + ", \"Отчество\":\"" + e.getSecondName() + '\"' + + ", \"Зарплата\":" + e.getSalary() + + "}" + ).collect(Collectors.joining(",\n"))+"]"; + } + + public static Employee[] listEmployiesWithSalaryMoreThanOrEqual(Integer value){ + var list = Arrays.stream(eployies).filter(e -> e.getSalary() >= value).toList(); + return list.toArray(new Employee[0]); + } + public static Employee[] listEmployiesWithSalaryLessThan(Integer value){ + var list = Arrays.stream(eployies).filter(e -> e.getSalary() + "{"+ + "\"Фамилия\":\"" + e.getLastName() + '\"' + + ", \"Имя\":\"" + e.getFirstName() + '\"' + + ", \"Отчество\":\"" + e.getSecondName() + '\"' + + ", \"Зарплата\":" + e.getSalary() + + "}" + ).collect(Collectors.joining(",\n"))+"]"; + } + public static void main(String[] args) { init(); //Basic difficult @@ -50,6 +103,22 @@ public static void main(String[] args) { System.out.println("Сотрудник с максимальной зарплатой: "+getEmployeeWithMaxSalary()); System.out.println("Среднее значение зарплат: "+getAvgSalaries()); System.out.println("Ф. И. О. всех сотрудников: "+listNamesOfAllEmployies()); + //Advanced difficult + salaryIndex(10); + System.out.println("TestCase: "+getAllEmployies()); + String randomDepartment = String.valueOf(1+ (int) (Math.random() * 5)); + System.out.println("Сотрудник с минимальной зарплатой в отделе "+randomDepartment+": "+getEmployeeWithMinSalaryInDepartment(randomDepartment)); + System.out.println("Сотрудник с максимальной зарплатой в отделе "+randomDepartment+": "+getEmployeeWithMaxSalaryInDepartment(randomDepartment)); + System.out.println("Сумму затрат на зарплату по отделу "+randomDepartment+": "+getSumSalariesInDepartment(randomDepartment)); + System.out.println("Средняя зарплата по отделу "+randomDepartment+": "+getAvgSalariesInDepartment(randomDepartment)); + salaryIndexInDepartment(randomDepartment,10); + System.out.println("Ф. И. О. сотрудников отдела "+randomDepartment+": "+listNamesOfEmployiesInDepartment(randomDepartment)); + Integer someValue = 150000; + System.out.println("Сотрудники с зарплатой меньше числа "+ someValue+ ":"); + System.out.println(specialOutputForListEmployiesMethods(listEmployiesWithSalaryLessThan(someValue))); + System.out.println("Сотрудники с зарплатой больше числа "+ someValue+ ":"); + System.out.println(specialOutputForListEmployiesMethods(listEmployiesWithSalaryMoreThanOrEqual(someValue))); + } } From 48cad469b2eaa93e86726416244f70b850af0545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D1=8F=D1=87=D0=B5=D1=81=D0=BB=D0=B0=D0=B2=20=D0=A2?= =?UTF-8?q?=D0=B8=D1=85=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Sat, 10 Sep 2022 23:38:59 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D0=9A=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=20?= =?UTF-8?q?=D0=94=D0=97=20=D0=9E=D1=87=D0=B5=D0=BD=D1=8C=20=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B6=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ru/skypro/Employee.java | 1 + src/ru/skypro/EmployeeBook.java | 151 ++++++++++++++++++++++++++++++++ src/ru/skypro/Main.java | 142 +++++++----------------------- 3 files changed, 183 insertions(+), 111 deletions(-) create mode 100644 src/ru/skypro/EmployeeBook.java diff --git a/src/ru/skypro/Employee.java b/src/ru/skypro/Employee.java index de139bc..df6f486 100644 --- a/src/ru/skypro/Employee.java +++ b/src/ru/skypro/Employee.java @@ -1,4 +1,5 @@ package ru.skypro; +// Ентити //@Getter public class Employee { private static int counter; diff --git a/src/ru/skypro/EmployeeBook.java b/src/ru/skypro/EmployeeBook.java new file mode 100644 index 0000000..afbfa50 --- /dev/null +++ b/src/ru/skypro/EmployeeBook.java @@ -0,0 +1,151 @@ +package ru.skypro; + +import java.util.Arrays; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; +// Аналог репозитория похоже +public class EmployeeBook { + + private final Employee[] eployies = new Employee[10]; + + public EmployeeBook() { + + } + + public void init() { + for (int i = 0; i < 10; i++) { + eployies[i] = new Employee( + "И." + i, "Ф." + i, "О." + i, + String.valueOf(1 + (int) i / 2), + 100000 + (int) (Math.random() * 100000)); + } + } + + public String getAllEmployies() { + return "[" + Arrays.stream(eployies).map(Employee::toString).collect(Collectors.joining(",\n")) + "]"; + } + + public Integer getSumSalaries() { + return Arrays.stream(eployies).map(Employee::getSalary).reduce(Integer::sum).orElseThrow(); + } + + public Employee getEmployeeWithMinSalary() { + return Arrays.stream(eployies).reduce((e1, e2) -> e1.getSalary() < e2.getSalary() ? e1 : e2).orElseThrow(); + } + + public Employee getEmployeeWithMaxSalary() { + return Arrays.stream(eployies).reduce((e1, e2) -> e1.getSalary() > e2.getSalary() ? e1 : e2).orElseThrow(); + } + + public Double getAvgSalaries() { + return (double) getSumSalaries() / eployies.length; + } + + public String listNamesOfAllEmployies() { + return "[" + Arrays.stream(eployies).map( + (e) -> + "{" + + "\"Фамилия\":\"" + e.getLastName() + '\"' + + ", \"Имя\":\"" + e.getFirstName() + '\"' + + ", \"Отчество\":\"" + e.getSecondName() + "\"}" + ).collect(Collectors.joining(",\n")) + "]"; + } + + public void salaryIndex(Integer percent) { + Arrays.stream(eployies).forEach((e) -> e.setSalary(e.getSalary() + e.getSalary() * percent / 100)); + } + + public Employee getEmployeeWithMinSalaryInDepartment(String department) { + return Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).reduce((e1, e2) -> e1.getSalary() < e2.getSalary() ? e1 : e2).orElseThrow(); + } + + public Employee getEmployeeWithMaxSalaryInDepartment(String department) { + return Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).reduce((e1, e2) -> e1.getSalary() > e2.getSalary() ? e1 : e2).orElseThrow(); + } + + public Integer getSumSalariesInDepartment(String department) { + return Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).map(Employee::getSalary).reduce(Integer::sum).orElseThrow(); + } + + public Double getAvgSalariesInDepartment(String department) { + return (double) getSumSalariesInDepartment(department) / Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).count(); + } + + public void salaryIndexInDepartment(String department, Integer percent) { + Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).forEach((e) -> e.setSalary(e.getSalary() + e.getSalary() * percent / 100)); + } + + public String listNamesOfEmployiesInDepartment(String department) { + return "[" + Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).map( + (e) -> + "{" + + "\"Фамилия\":\"" + e.getLastName() + '\"' + + ", \"Имя\":\"" + e.getFirstName() + '\"' + + ", \"Отчество\":\"" + e.getSecondName() + '\"' + + ", \"Зарплата\":" + e.getSalary() + + "}" + ).collect(Collectors.joining(",\n")) + "]"; + } + + public Employee[] listEmployiesWithSalaryMoreThanOrEqual(Integer value) { + var list = Arrays.stream(eployies).filter(e -> e.getSalary() >= value).toList(); + return list.toArray(new Employee[0]); + } + + public Employee[] listEmployiesWithSalaryLessThan(Integer value) { + var list = Arrays.stream(eployies).filter(e -> e.getSalary() < value).toList(); + return list.toArray(new Employee[0]); + } + + public String specialOutputForListEmployiesMethods(Employee[] eployies) { + return "[" + Arrays.stream(eployies).map( + (e) -> + "{" + + "\"Фамилия\":\"" + e.getLastName() + '\"' + + ", \"Имя\":\"" + e.getFirstName() + '\"' + + ", \"Отчество\":\"" + e.getSecondName() + '\"' + + ", \"Зарплата\":" + e.getSalary() + + "}" + ).collect(Collectors.joining(",\n")) + "]"; + } + + public void addNewEmplyeeInMem(String firstName, String lastName, String secondName, String department, Integer salary) { + for (var i = 0; i < 10; i++) { + if (eployies[i] == null) { + eployies[i] = new Employee(firstName, lastName, secondName, department, salary); + return; + } + } + throw new RuntimeException("Все ячейки массива заняты"); + } + + public void delEmployeeById(Integer id) { + eployies[id] = null; + } + + public void delEmployeeByFIO(String firstName, String lastName, String secondName) { + for (var i = 0; i < 10; i++) { + if (eployies[i] != null && Objects.equals(eployies[i].getFirstName(), firstName) && + Objects.equals(eployies[i].getLastName(), lastName) && + Objects.equals(eployies[i].getSecondName(), secondName) + ) + eployies[i] = null; + } + } + + public void setEmployeeSalaryAndDepartment(String firstName, String lastName, String secondName, Optional department, Optional salary) { + for (var i = 0; i < 10; i++) { + if (Objects.equals(eployies[i].getFirstName(), firstName) && + Objects.equals(eployies[i].getLastName(), lastName) && + Objects.equals(eployies[i].getSecondName(), secondName) + ) { + if (salary.isPresent()) + eployies[i].setSalary(salary.get()); + if (department.isPresent()) + eployies[i].setDepartment(department.get()); + } + } + } + +} diff --git a/src/ru/skypro/Main.java b/src/ru/skypro/Main.java index ddc76ad..eb12054 100644 --- a/src/ru/skypro/Main.java +++ b/src/ru/skypro/Main.java @@ -1,123 +1,43 @@ package ru.skypro; -import java.util.Arrays; -import java.util.Objects; -import java.util.stream.Collectors; +import java.util.Optional; public class Main { - - static Employee[] eployies = new Employee[10]; - public static void init(){ - for (int i = 0; i < 10; i++) { - eployies[i] = new Employee( - "И." + i, "Ф." + i, "О." + i, - String.valueOf(1 + (int) i / 2), - 100000 + (int) (Math.random() * 100000)); - } - } - public static String getAllEmployies(){ - return "["+Arrays.stream(eployies).map(Employee::toString).collect(Collectors.joining(",\n"))+"]"; - } - - public static Integer getSumSalaries(){ - return Arrays.stream(eployies).map(Employee::getSalary).reduce(Integer::sum).orElseThrow(); - } - - public static Employee getEmployeeWithMinSalary(){ - return Arrays.stream(eployies).reduce((e1,e2)->e1.getSalary()e1.getSalary()>e2.getSalary()?e1:e2).orElseThrow(); - } - public static Double getAvgSalaries(){ - return (double) getSumSalaries()/eployies.length; - } - - public static String listNamesOfAllEmployies(){ - return "["+Arrays.stream(eployies).map( - (e)-> - "{"+ - "\"Фамилия\":\"" + e.getLastName() + '\"' + - ", \"Имя\":\"" + e.getFirstName() + '\"' + - ", \"Отчество\":\"" + e.getSecondName() + "\"}" - ).collect(Collectors.joining(",\n"))+"]"; - } - - public static void salaryIndex(Integer percent){ - Arrays.stream(eployies).forEach((e)->e.setSalary(e.getSalary()+e.getSalary()*percent/100)); - } - - public static Employee getEmployeeWithMinSalaryInDepartment(String department){ - return Arrays.stream(eployies).filter(e-> Objects.equals(e.getDepartment(), department)).reduce((e1, e2)->e1.getSalary() Objects.equals(e.getDepartment(), department)).reduce((e1,e2)->e1.getSalary()>e2.getSalary()?e1:e2).orElseThrow(); - } - public static Integer getSumSalariesInDepartment(String department){ - return Arrays.stream(eployies).filter(e-> Objects.equals(e.getDepartment(), department)).map(Employee::getSalary).reduce(Integer::sum).orElseThrow(); - } - public static Double getAvgSalariesInDepartment(String department){ - return (double) getSumSalariesInDepartment(department)/Arrays.stream(eployies).filter(e-> Objects.equals(e.getDepartment(), department)).count(); - } - public static void salaryIndexInDepartment(String department, Integer percent){ - Arrays.stream(eployies).filter(e-> Objects.equals(e.getDepartment(), department)).forEach((e)->e.setSalary(e.getSalary()+e.getSalary()*percent/100)); - } - public static String listNamesOfEmployiesInDepartment(String department){ - return "["+Arrays.stream(eployies).filter(e-> Objects.equals(e.getDepartment(), department)).map( - (e)-> - "{"+ - "\"Фамилия\":\"" + e.getLastName() + '\"' + - ", \"Имя\":\"" + e.getFirstName() + '\"' + - ", \"Отчество\":\"" + e.getSecondName() + '\"' + - ", \"Зарплата\":" + e.getSalary() + - "}" - ).collect(Collectors.joining(",\n"))+"]"; - } - - public static Employee[] listEmployiesWithSalaryMoreThanOrEqual(Integer value){ - var list = Arrays.stream(eployies).filter(e -> e.getSalary() >= value).toList(); - return list.toArray(new Employee[0]); - } - public static Employee[] listEmployiesWithSalaryLessThan(Integer value){ - var list = Arrays.stream(eployies).filter(e -> e.getSalary() - "{"+ - "\"Фамилия\":\"" + e.getLastName() + '\"' + - ", \"Имя\":\"" + e.getFirstName() + '\"' + - ", \"Отчество\":\"" + e.getSecondName() + '\"' + - ", \"Зарплата\":" + e.getSalary() + - "}" - ).collect(Collectors.joining(",\n"))+"]"; - } + private static final EmployeeBook book = new EmployeeBook(); public static void main(String[] args) { - init(); + book.init(); //Basic difficult - System.out.println("Список всех сотрудников со всеми имеющимися по ним данными: "+getAllEmployies()); - System.out.println("Сумма затрат на зарплаты в месяц: "+getSumSalaries()); - System.out.println("Сотрудник с минимальной зарплатой: "+getEmployeeWithMinSalary()); - System.out.println("Сотрудник с максимальной зарплатой: "+getEmployeeWithMaxSalary()); - System.out.println("Среднее значение зарплат: "+getAvgSalaries()); - System.out.println("Ф. И. О. всех сотрудников: "+listNamesOfAllEmployies()); + System.out.println("Список всех сотрудников со всеми имеющимися по ним данными: " + book.getAllEmployies()); + System.out.println("Сумма затрат на зарплаты в месяц: " + book.getSumSalaries()); + System.out.println("Сотрудник с минимальной зарплатой: " + book.getEmployeeWithMinSalary()); + System.out.println("Сотрудник с максимальной зарплатой: " + book.getEmployeeWithMaxSalary()); + System.out.println("Среднее значение зарплат: " + book.getAvgSalaries()); + System.out.println("Ф. И. О. всех сотрудников: " + book.listNamesOfAllEmployies()); //Advanced difficult - salaryIndex(10); - System.out.println("TestCase: "+getAllEmployies()); - String randomDepartment = String.valueOf(1+ (int) (Math.random() * 5)); - System.out.println("Сотрудник с минимальной зарплатой в отделе "+randomDepartment+": "+getEmployeeWithMinSalaryInDepartment(randomDepartment)); - System.out.println("Сотрудник с максимальной зарплатой в отделе "+randomDepartment+": "+getEmployeeWithMaxSalaryInDepartment(randomDepartment)); - System.out.println("Сумму затрат на зарплату по отделу "+randomDepartment+": "+getSumSalariesInDepartment(randomDepartment)); - System.out.println("Средняя зарплата по отделу "+randomDepartment+": "+getAvgSalariesInDepartment(randomDepartment)); - salaryIndexInDepartment(randomDepartment,10); - System.out.println("Ф. И. О. сотрудников отдела "+randomDepartment+": "+listNamesOfEmployiesInDepartment(randomDepartment)); + book.salaryIndex(10); + System.out.println("TestCase: " + book.getAllEmployies()); + String randomDepartment = String.valueOf(1 + (int) (Math.random() * 5)); + System.out.println("Сотрудник с минимальной зарплатой в отделе " + randomDepartment + ": " + book.getEmployeeWithMinSalaryInDepartment(randomDepartment)); + System.out.println("Сотрудник с максимальной зарплатой в отделе " + randomDepartment + ": " + book.getEmployeeWithMaxSalaryInDepartment(randomDepartment)); + System.out.println("Сумму затрат на зарплату по отделу " + randomDepartment + ": " + book.getSumSalariesInDepartment(randomDepartment)); + System.out.println("Средняя зарплата по отделу " + randomDepartment + ": " + book.getAvgSalariesInDepartment(randomDepartment)); + book.salaryIndexInDepartment(randomDepartment, 10); + System.out.println("Ф. И. О. сотрудников отдела " + randomDepartment + ": " + book.listNamesOfEmployiesInDepartment(randomDepartment)); Integer someValue = 150000; - System.out.println("Сотрудники с зарплатой меньше числа "+ someValue+ ":"); - System.out.println(specialOutputForListEmployiesMethods(listEmployiesWithSalaryLessThan(someValue))); - System.out.println("Сотрудники с зарплатой больше числа "+ someValue+ ":"); - System.out.println(specialOutputForListEmployiesMethods(listEmployiesWithSalaryMoreThanOrEqual(someValue))); + System.out.println("Сотрудники с зарплатой меньше числа " + someValue + ":"); + System.out.println(book.specialOutputForListEmployiesMethods(book.listEmployiesWithSalaryLessThan(someValue))); + System.out.println("Сотрудники с зарплатой больше числа " + someValue + ":"); + System.out.println(book.specialOutputForListEmployiesMethods(book.listEmployiesWithSalaryMoreThanOrEqual(someValue))); + //Very difficult + book.delEmployeeById(1); + book.delEmployeeByFIO("И.4", "Ф.4", "О.4"); + book.addNewEmplyeeInMem("asdf", "fdsa", "sasd", "3", 120000); + book.addNewEmplyeeInMem("QQasdf", "QWfdsa", "WWasd", "1", 60000); + book.setEmployeeSalaryAndDepartment("И.6", "Ф.6", "О.6", Optional.of("1"), Optional.of(300000)); + book.setEmployeeSalaryAndDepartment("И.7", "Ф.7", "О.7", Optional.empty(), Optional.of(250000)); + System.out.println("TestCase: "); + System.out.println(book.getAllEmployies()); } From 6063e030a1090c3a0aae39ed6abdd18bf6d8110f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D1=8F=D1=87=D0=B5=D1=81=D0=BB=D0=B0=D0=B2=20=D0=A2?= =?UTF-8?q?=D0=B8=D1=85=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Sun, 11 Sep 2022 00:08:31 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=9A=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=20?= =?UTF-8?q?=D0=94=D0=97=20=D0=9D=D0=B5=D0=BC=D0=BD=D0=BE=D0=B6=D0=BA=D0=BE?= =?UTF-8?q?=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ru/skypro/Employee.java | 20 ++++++- src/ru/skypro/EmployeeBook.java | 99 ++++++++++++++++++--------------- src/ru/skypro/Main.java | 6 +- 3 files changed, 72 insertions(+), 53 deletions(-) diff --git a/src/ru/skypro/Employee.java b/src/ru/skypro/Employee.java index df6f486..1f2ec01 100644 --- a/src/ru/skypro/Employee.java +++ b/src/ru/skypro/Employee.java @@ -1,4 +1,5 @@ package ru.skypro; + // Ентити //@Getter public class Employee { @@ -12,7 +13,7 @@ public class Employee { //@Setter private Integer salary; - public Employee(final String firstName, final String lastName, final String secondName, final String department, final Integer salary){ + public Employee(final String firstName, final String lastName, final String secondName, final String department, final Integer salary) { this.id = counter++; this.firstName = firstName; this.lastName = lastName; @@ -34,8 +35,21 @@ public String toString() { "}"; } - public Integer getId() { - return id; + public String toStringOnlyFIO() { + return "{" + + "\"Фамилия\":\"" + lastName + '\"' + + ", \"Имя\":\"" + firstName + '\"' + + ", \"Отчество\":\"" + secondName + "\"" + + "}"; + } + + public String toStringWithoutDepartment() { + return "{" + + "\"Фамилия\":\"" + lastName + '\"' + + ", \"Имя\":\"" + firstName + '\"' + + ", \"Отчество\":\"" + secondName + "\"" + + ", \"Зарплата\":" + salary + + "}"; } public String getFirstName() { diff --git a/src/ru/skypro/EmployeeBook.java b/src/ru/skypro/EmployeeBook.java index afbfa50..72419ec 100644 --- a/src/ru/skypro/EmployeeBook.java +++ b/src/ru/skypro/EmployeeBook.java @@ -2,8 +2,8 @@ import java.util.Arrays; import java.util.Objects; -import java.util.Optional; import java.util.stream.Collectors; + // Аналог репозитория похоже public class EmployeeBook { @@ -17,25 +17,31 @@ public void init() { for (int i = 0; i < 10; i++) { eployies[i] = new Employee( "И." + i, "Ф." + i, "О." + i, - String.valueOf(1 + (int) i / 2), + String.valueOf(1 + i / 2), 100000 + (int) (Math.random() * 100000)); } } public String getAllEmployies() { - return "[" + Arrays.stream(eployies).map(Employee::toString).collect(Collectors.joining(",\n")) + "]"; + return "[" + Arrays.stream(eployies) + .map(Employee::toString) + .collect(Collectors.joining(",\n")) + "]"; } public Integer getSumSalaries() { - return Arrays.stream(eployies).map(Employee::getSalary).reduce(Integer::sum).orElseThrow(); + return Arrays.stream(eployies) + .mapToInt(Employee::getSalary) + .sum(); } public Employee getEmployeeWithMinSalary() { - return Arrays.stream(eployies).reduce((e1, e2) -> e1.getSalary() < e2.getSalary() ? e1 : e2).orElseThrow(); + return Arrays.stream(eployies) + .reduce((e1, e2) -> e1.getSalary() < e2.getSalary() ? e1 : e2).orElseThrow(); } public Employee getEmployeeWithMaxSalary() { - return Arrays.stream(eployies).reduce((e1, e2) -> e1.getSalary() > e2.getSalary() ? e1 : e2).orElseThrow(); + return Arrays.stream(eployies) + .reduce((e1, e2) -> e1.getSalary() > e2.getSalary() ? e1 : e2).orElseThrow(); } public Double getAvgSalaries() { @@ -43,71 +49,70 @@ public Double getAvgSalaries() { } public String listNamesOfAllEmployies() { - return "[" + Arrays.stream(eployies).map( - (e) -> - "{" + - "\"Фамилия\":\"" + e.getLastName() + '\"' + - ", \"Имя\":\"" + e.getFirstName() + '\"' + - ", \"Отчество\":\"" + e.getSecondName() + "\"}" - ).collect(Collectors.joining(",\n")) + "]"; + return "[" + Arrays.stream(eployies) + .map(Employee::toStringOnlyFIO) + .collect(Collectors.joining(",\n")) + "]"; } public void salaryIndex(Integer percent) { - Arrays.stream(eployies).forEach((e) -> e.setSalary(e.getSalary() + e.getSalary() * percent / 100)); + Arrays.stream(eployies) + .forEach((e) -> e.setSalary(e.getSalary() + e.getSalary() * percent / 100)); } public Employee getEmployeeWithMinSalaryInDepartment(String department) { - return Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).reduce((e1, e2) -> e1.getSalary() < e2.getSalary() ? e1 : e2).orElseThrow(); + return Arrays.stream(eployies) + .filter(e -> Objects.equals(e.getDepartment(), department)) + .reduce((e1, e2) -> e1.getSalary() < e2.getSalary() ? e1 : e2).orElseThrow(); } public Employee getEmployeeWithMaxSalaryInDepartment(String department) { - return Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).reduce((e1, e2) -> e1.getSalary() > e2.getSalary() ? e1 : e2).orElseThrow(); + return Arrays.stream(eployies) + .filter(e -> Objects.equals(e.getDepartment(), department)) + .reduce((e1, e2) -> e1.getSalary() > e2.getSalary() ? e1 : e2).orElseThrow(); } public Integer getSumSalariesInDepartment(String department) { - return Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).map(Employee::getSalary).reduce(Integer::sum).orElseThrow(); + return Arrays.stream(eployies) + .filter(e -> Objects.equals(e.getDepartment(), department)) + .mapToInt(Employee::getSalary).sum(); } public Double getAvgSalariesInDepartment(String department) { - return (double) getSumSalariesInDepartment(department) / Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).count(); + return (double) getSumSalariesInDepartment(department) / + Arrays.stream(eployies) + .filter(e -> Objects.equals(e.getDepartment(), department)) + .count(); } public void salaryIndexInDepartment(String department, Integer percent) { - Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).forEach((e) -> e.setSalary(e.getSalary() + e.getSalary() * percent / 100)); + Arrays.stream(eployies) + .filter(e -> Objects.equals(e.getDepartment(), department)) + .forEach((e) -> e.setSalary(e.getSalary() + e.getSalary() * percent / 100)); } public String listNamesOfEmployiesInDepartment(String department) { - return "[" + Arrays.stream(eployies).filter(e -> Objects.equals(e.getDepartment(), department)).map( - (e) -> - "{" + - "\"Фамилия\":\"" + e.getLastName() + '\"' + - ", \"Имя\":\"" + e.getFirstName() + '\"' + - ", \"Отчество\":\"" + e.getSecondName() + '\"' + - ", \"Зарплата\":" + e.getSalary() + - "}" - ).collect(Collectors.joining(",\n")) + "]"; + return "[" + Arrays.stream(eployies) + .filter(e -> Objects.equals(e.getDepartment(), department)) + .map(Employee::toStringWithoutDepartment) + .collect(Collectors.joining(",\n")) + "]"; } public Employee[] listEmployiesWithSalaryMoreThanOrEqual(Integer value) { - var list = Arrays.stream(eployies).filter(e -> e.getSalary() >= value).toList(); + var list = Arrays.stream(eployies) + .filter(e -> e.getSalary() >= value).toList(); return list.toArray(new Employee[0]); } public Employee[] listEmployiesWithSalaryLessThan(Integer value) { - var list = Arrays.stream(eployies).filter(e -> e.getSalary() < value).toList(); + var list = Arrays.stream(eployies) + .filter(e -> e.getSalary() < value).toList(); return list.toArray(new Employee[0]); } public String specialOutputForListEmployiesMethods(Employee[] eployies) { - return "[" + Arrays.stream(eployies).map( - (e) -> - "{" + - "\"Фамилия\":\"" + e.getLastName() + '\"' + - ", \"Имя\":\"" + e.getFirstName() + '\"' + - ", \"Отчество\":\"" + e.getSecondName() + '\"' + - ", \"Зарплата\":" + e.getSalary() + - "}" - ).collect(Collectors.joining(",\n")) + "]"; + return "[" + Arrays.stream(eployies) + .map(Employee::toStringWithoutDepartment) + .collect(Collectors.joining(",\n")) + "]"; } public void addNewEmplyeeInMem(String firstName, String lastName, String secondName, String department, Integer salary) { @@ -126,7 +131,8 @@ public void delEmployeeById(Integer id) { public void delEmployeeByFIO(String firstName, String lastName, String secondName) { for (var i = 0; i < 10; i++) { - if (eployies[i] != null && Objects.equals(eployies[i].getFirstName(), firstName) && + if (eployies[i] != null && + Objects.equals(eployies[i].getFirstName(), firstName) && Objects.equals(eployies[i].getLastName(), lastName) && Objects.equals(eployies[i].getSecondName(), secondName) ) @@ -134,16 +140,17 @@ public void delEmployeeByFIO(String firstName, String lastName, String secondNam } } - public void setEmployeeSalaryAndDepartment(String firstName, String lastName, String secondName, Optional department, Optional salary) { + public void setEmployeeSalaryAndDepartment(String firstName, String lastName, String secondName, String department, Integer salary) { for (var i = 0; i < 10; i++) { - if (Objects.equals(eployies[i].getFirstName(), firstName) && + if (eployies[i] != null && + Objects.equals(eployies[i].getFirstName(), firstName) && Objects.equals(eployies[i].getLastName(), lastName) && Objects.equals(eployies[i].getSecondName(), secondName) ) { - if (salary.isPresent()) - eployies[i].setSalary(salary.get()); - if (department.isPresent()) - eployies[i].setDepartment(department.get()); + if (salary != null) + eployies[i].setSalary(salary); + if (department != null) + eployies[i].setDepartment(department); } } } diff --git a/src/ru/skypro/Main.java b/src/ru/skypro/Main.java index eb12054..483d5f2 100644 --- a/src/ru/skypro/Main.java +++ b/src/ru/skypro/Main.java @@ -1,7 +1,5 @@ package ru.skypro; -import java.util.Optional; - public class Main { private static final EmployeeBook book = new EmployeeBook(); @@ -34,8 +32,8 @@ public static void main(String[] args) { book.delEmployeeByFIO("И.4", "Ф.4", "О.4"); book.addNewEmplyeeInMem("asdf", "fdsa", "sasd", "3", 120000); book.addNewEmplyeeInMem("QQasdf", "QWfdsa", "WWasd", "1", 60000); - book.setEmployeeSalaryAndDepartment("И.6", "Ф.6", "О.6", Optional.of("1"), Optional.of(300000)); - book.setEmployeeSalaryAndDepartment("И.7", "Ф.7", "О.7", Optional.empty(), Optional.of(250000)); + book.setEmployeeSalaryAndDepartment("И.6", "Ф.6", "О.6", "1", 300000); + book.setEmployeeSalaryAndDepartment("И.7", "Ф.7", "О.7", null, 250000); System.out.println("TestCase: "); System.out.println(book.getAllEmployies());