diff --git a/pom.xml b/pom.xml
index 3ffdac1..430963b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,16 +21,18 @@
-
- junit
- junit
- LATEST
-
org.projectlombok
lombok
LATEST
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.10.2
+ test
+
diff --git a/src/main/java/faangschool/magic/Main.java b/src/main/java/faangschool/magic/Main.java
new file mode 100644
index 0000000..56857af
--- /dev/null
+++ b/src/main/java/faangschool/magic/Main.java
@@ -0,0 +1,40 @@
+package faangschool.magic;
+
+import fromsber.Employee;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+
+public class Main {
+ public static void main(String[] args) {
+ Student student = new Student();
+ Student student2 = new Student();
+ Student student3 = new Student();
+ Student student4 = new Student();
+
+ student2.setAge(15);
+ student2.setName("Alpha");
+ student.setAge(18);
+ student.setName("Mozol");
+ student4.setAge(16);
+ student4.setName("Bruce");
+ student3.setAge(56);
+ student3.setName("Zoo");
+
+ Student[] students = new Student[]{student, student2, student3, student4};
+
+ System.out.println("Unsorted array " + Arrays.toString(students));
+
+ Arrays.sort(students);
+
+ System.out.println("Sorted array " + Arrays.toString(students));
+
+ Arrays.stream(students).sorted(new StudentNameComparatorASC()).forEach(System.out::println);
+ System.out.println();
+
+ Arrays.stream(students).sorted(new StudentNameComparatorDESC()).forEach(System.out::println);
+
+
+ }
+}
diff --git a/src/main/java/faangschool/magic/Student.java b/src/main/java/faangschool/magic/Student.java
new file mode 100644
index 0000000..1d04943
--- /dev/null
+++ b/src/main/java/faangschool/magic/Student.java
@@ -0,0 +1,60 @@
+package faangschool.magic;
+
+
+import java.util.Arrays;
+import java.util.Comparator;
+
+public class Student
+ implements Comparable {
+ private String name;
+ private int age;
+ private String faculty;
+ private String[] abilities;
+
+ public String getName() {
+ return name;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public String getFaculty() {
+ return faculty;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "Student{" +
+ "name='" + name + '\'' +
+ ", age=" + age +
+// ", faculty='" + faculty + '\'' +
+// ", abilities=" + Arrays.toString(abilities) +
+ '}';
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public void setFaculty(String faculty) {
+ this.faculty = faculty;
+ }
+
+ public void setAbilities(String[] abilities) {
+ this.abilities = abilities;
+ }
+
+ public String[] getAbilities() {
+ return abilities;
+ }
+
+ @Override
+ public int compareTo(Student o) {
+ return this.age - o.age;
+ }
+}
diff --git a/src/main/java/faangschool/magic/StudentNameComparatorASC.java b/src/main/java/faangschool/magic/StudentNameComparatorASC.java
new file mode 100644
index 0000000..c34a44a
--- /dev/null
+++ b/src/main/java/faangschool/magic/StudentNameComparatorASC.java
@@ -0,0 +1,11 @@
+package faangschool.magic;
+
+import java.util.Comparator;
+
+public class StudentNameComparatorASC implements Comparator {
+
+ @Override
+ public int compare(Student o1, Student o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+}
diff --git a/src/main/java/faangschool/magic/StudentNameComparatorDESC.java b/src/main/java/faangschool/magic/StudentNameComparatorDESC.java
new file mode 100644
index 0000000..48a1137
--- /dev/null
+++ b/src/main/java/faangschool/magic/StudentNameComparatorDESC.java
@@ -0,0 +1,10 @@
+package faangschool.magic;
+
+import java.util.Comparator;
+
+public class StudentNameComparatorDESC implements Comparator {
+ @Override
+ public int compare(Student o1, Student o2) {
+ return o2.getName().compareTo(o1.getName());
+ }
+}
diff --git a/src/main/java/faangschool/magic/collection/CompositeKey.java b/src/main/java/faangschool/magic/collection/CompositeKey.java
new file mode 100644
index 0000000..650d8c2
--- /dev/null
+++ b/src/main/java/faangschool/magic/collection/CompositeKey.java
@@ -0,0 +1,19 @@
+package faangschool.magic.collection;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+
+@AllArgsConstructor
+@Data
+@Builder
+public class CompositeKey {
+
+ private final String faculty;
+ private final int year;
+
+
+}
+
+
diff --git a/src/main/java/faangschool/magic/collection/CountOccurrences.java b/src/main/java/faangschool/magic/collection/CountOccurrences.java
new file mode 100644
index 0000000..bc2361c
--- /dev/null
+++ b/src/main/java/faangschool/magic/collection/CountOccurrences.java
@@ -0,0 +1,17 @@
+package faangschool.magic.collection;
+
+import java.util.HashMap;
+
+public class CountOccurrences {
+ public static void main(String[] args) {
+ int[] arr = {1, 2, 3, 4, 2, 1, 3, 4, 5, 1};
+
+ HashMap map = new HashMap<>();
+
+ for (int i : arr) {
+ map.put(i, map.getOrDefault(i, 0) + 1);
+ }
+
+ System.out.println(map);
+ }
+}
diff --git a/src/main/java/faangschool/magic/collection/Main.java b/src/main/java/faangschool/magic/collection/Main.java
new file mode 100644
index 0000000..7097636
--- /dev/null
+++ b/src/main/java/faangschool/magic/collection/Main.java
@@ -0,0 +1,72 @@
+package faangschool.magic.collection;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static java.util.List.*;
+
+public class Main {
+
+ public static List initStudents;
+ public static Map> students;
+
+ static {
+ initStudents = of(
+ Student.builder().name("Boris").faculty("Math").year(2006).build(),
+ Student.builder().name("Vasily").faculty("Physic").year(2011).build(),
+ Student.builder().name("Nick").faculty("Chemistry").year(2015).build(),
+ Student.builder().name("Ahmed").faculty("Math").year(2003).build(),
+ Student.builder().name("Marina").faculty("Economic").year(2013).build(),
+ Student.builder().name("Olga").faculty("Biology").year(2005).build(),
+ Student.builder().name("Maria").faculty("Chemistry").year(2015).build(),
+ Student.builder().name("Georgy").faculty("Physic").year(2004).build(),
+ Student.builder().name("Stepan").faculty("Literature").year(2008).build(),
+ Student.builder().name("Anna").faculty("Literature").year(2004).build(),
+ Student.builder().name("Semen").faculty("Physic").year(2011).build()
+ );
+
+ students = getStudentsGroupingByFacultyAndYear(initStudents);
+ }
+
+
+ public static void main(String[] args) {
+
+ for (Map.Entry> entry: students.entrySet()) {
+ System.out.println();
+ }
+ }
+
+ public static Map> getStudentsGroupingByFacultyAndYear(List students){
+ return students
+ .stream()
+ .collect(Collectors.groupingBy(c-> new CompositeKey(c.getFaculty(), c.getYear())));
+ }
+
+ //TODO 16.08.2024 - 8:29: refactor method
+ public static boolean addStudent(Student student) {
+ ArrayList emptyStudentsLists = new ArrayList<>();
+
+ if(student != null) {
+ CompositeKey key = new CompositeKey(student.getFaculty(), student.getYear());
+
+ if(!students.containsKey(key)) {
+ students.put(key, students.getOrDefault(key, emptyStudentsLists));
+ return true;
+ }
+ } else{
+ return false;
+ }
+ return false;
+ }
+
+ //TODO 16.08.2024 - 8:29: refactor method
+ public static boolean deleteStudent(Student student) {
+ CompositeKey maybeStudent = new CompositeKey(student.getFaculty(), student.getYear());
+ if(students.containsKey(maybeStudent)) {
+ students.remove(maybeStudent);
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/src/main/java/faangschool/magic/collection/MutableKey.java b/src/main/java/faangschool/magic/collection/MutableKey.java
new file mode 100644
index 0000000..b657330
--- /dev/null
+++ b/src/main/java/faangschool/magic/collection/MutableKey.java
@@ -0,0 +1,33 @@
+package faangschool.magic.collection;
+
+import java.util.Objects;
+
+public class MutableKey {
+
+ private String key;
+
+ public MutableKey(String key) {
+ this.key = key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if(o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ MutableKey that = (MutableKey) o;
+ return Objects.equals(key, that.key);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(key);
+ }
+}
diff --git a/src/main/java/faangschool/magic/collection/ReverseMapping.java b/src/main/java/faangschool/magic/collection/ReverseMapping.java
new file mode 100644
index 0000000..1a96102
--- /dev/null
+++ b/src/main/java/faangschool/magic/collection/ReverseMapping.java
@@ -0,0 +1,24 @@
+package faangschool.magic.collection;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class ReverseMapping {
+ public static void main(String[] args) {
+
+ HashMap countryCapital = new HashMap<>();
+ countryCapital.put("France", "Paris");
+ countryCapital.put("England", "London");
+ countryCapital.put("Russia", "Moscow");
+
+ System.out.println(countryCapital);
+
+ Map capitalCountry = countryCapital
+ .entrySet()
+ .stream()
+ .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));
+
+ System.out.println(capitalCountry);
+ }
+}
diff --git a/src/main/java/faangschool/magic/collection/Student.java b/src/main/java/faangschool/magic/collection/Student.java
new file mode 100644
index 0000000..fa9f635
--- /dev/null
+++ b/src/main/java/faangschool/magic/collection/Student.java
@@ -0,0 +1,16 @@
+package faangschool.magic.collection;
+
+import lombok.Builder;
+import lombok.Data;
+
+@Data
+@Builder
+public class Student {
+
+ private String name;
+ private String faculty;
+ private int year;
+
+
+
+}
diff --git a/src/main/java/fromsber/Employee.java b/src/main/java/fromsber/Employee.java
new file mode 100644
index 0000000..e6b2017
--- /dev/null
+++ b/src/main/java/fromsber/Employee.java
@@ -0,0 +1,36 @@
+package fromsber;
+
+public class Employee {
+
+ private String name;
+ private Status status;
+
+ public Employee(String name, Status status) {
+ this.name = name;
+ this.status = status;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Status getStatus() {
+ return status;
+ }
+
+ @Override
+ public String toString() {
+ return "Employee{" +
+ "name='" + name + '\'' +
+ ", status=" + status +
+ '}';
+ }
+
+ public void setStatus(Status status) {
+ this.status = status;
+ }
+}
diff --git a/src/main/java/fromsber/EmployeeController.java b/src/main/java/fromsber/EmployeeController.java
new file mode 100644
index 0000000..26fe3e8
--- /dev/null
+++ b/src/main/java/fromsber/EmployeeController.java
@@ -0,0 +1,48 @@
+package fromsber;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+//@RestController
+public class EmployeeController {
+
+
+ private List employees;
+
+ public EmployeeController() {
+ }
+
+ public Map> getListEmployee(List employees) {
+// Map> map = new HashMap<>();
+//
+// for (Employee employee : employees) {
+// ArrayList emptyList = new ArrayList<>();
+// List orDefault = map.getOrDefault(employee.getStatus(), emptyList);
+// orDefault.add(employee);
+// map.put(employee.getStatus(), orDefault);
+// }
+// return map;
+
+ return employees.stream().collect(Collectors.groupingBy(Employee::getStatus));
+ }
+
+ public static void main(String[] args) {
+
+ EmployeeController employeeController = new EmployeeController();
+ List employeeList = new ArrayList<>(
+ Arrays.asList(
+ new Employee("Masha", Status.ACCEPTED),
+ new Employee("Nick", Status.ACCEPTED),
+ new Employee("Sasha", Status.NOT_ACCEPTED),
+ new Employee("Dasha", Status.ACCEPTED),
+ new Employee("Misha", Status.NOT_ACCEPTED)
+ )
+ );
+
+
+ System.out.println(employeeList.get(1).getStatus());
+ Map> listEmployee = employeeController.getListEmployee(employeeList);
+
+ System.out.println(listEmployee);
+ }
+}
diff --git a/src/main/java/fromsber/Status.java b/src/main/java/fromsber/Status.java
new file mode 100644
index 0000000..9a3fdf0
--- /dev/null
+++ b/src/main/java/fromsber/Status.java
@@ -0,0 +1,5 @@
+package fromsber;
+
+public enum Status {
+ ACCEPTED, NOT_ACCEPTED
+}
diff --git a/src/test/java/faangschool/magic/collection/MainTest.java b/src/test/java/faangschool/magic/collection/MainTest.java
new file mode 100644
index 0000000..00bb7e6
--- /dev/null
+++ b/src/test/java/faangschool/magic/collection/MainTest.java
@@ -0,0 +1,67 @@
+package faangschool.magic.collection;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static java.util.List.of;
+import static org.junit.jupiter.api.Assertions.*;
+
+
+public class MainTest {
+
+ public static List initStudents;
+ public static Map> students;
+
+ private static Student BORIS_STUDENT = Student.builder().name("Boris").faculty("Math").year(2006).build();
+
+
+ @BeforeAll
+ public static void data() {
+
+ initStudents = of(
+ Student.builder().name("Boris").faculty("Math").year(2006).build(),
+ Student.builder().name("Vasily").faculty("Physic").year(2011).build(),
+ Student.builder().name("Nick").faculty("Chemistry").year(2015).build(),
+ Student.builder().name("Ahmed").faculty("Math").year(2003).build(),
+ Student.builder().name("Marina").faculty("Economic").year(2013).build(),
+ Student.builder().name("Olga").faculty("Biology").year(2005).build(),
+ Student.builder().name("Maria").faculty("Chemistry").year(2015).build(),
+ Student.builder().name("Georgy").faculty("Physic").year(2004).build(),
+ Student.builder().name("Stepan").faculty("Literature").year(2008).build(),
+ Student.builder().name("Anna").faculty("Literature").year(2004).build(),
+ Student.builder().name("Semen").faculty("Physic").year(2011).build()
+ );
+
+ students = initStudents
+ .stream()
+ .collect(Collectors.groupingBy(c-> new CompositeKey(c.getFaculty(), c.getYear())));
+
+ for (Map.Entry> entry: students.entrySet()) {
+ System.out.println("key: " + entry.getKey() + " value: " + entry.getValue());
+ }
+
+ System.out.println("@BeforeAll finished================");
+ }
+
+
+
+
+ @Test
+ public void testAddStudent() {
+ assertFalse(Main.addStudent(BORIS_STUDENT));
+ }
+
+
+ @Test
+ public void testDeleteStudent() {
+ assertTrue(Main.deleteStudent(BORIS_STUDENT));
+ }
+
+ public void testGetStudentsGroupingByFacultyAndYear() {
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/letscode/javalearn/Streams.java b/src/test/java/letscode/javalearn/Streams.java
index d3c4fab..fdb086e 100644
--- a/src/test/java/letscode/javalearn/Streams.java
+++ b/src/test/java/letscode/javalearn/Streams.java
@@ -4,7 +4,7 @@
import letscode.javalearn.domain.Employee;
import letscode.javalearn.domain.Event;
import letscode.javalearn.domain.Position;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.IOException;
@@ -18,22 +18,22 @@
public class Streams {
private List emps = List.of(
- new Employee("Michael", "Smith", 243, 43, Position.CHEF),
- new Employee("Jane", "Smith", 523, 40, Position.MANAGER),
- new Employee("Jury", "Gagarin", 6423, 26, Position.MANAGER),
- new Employee("Jack", "London", 5543, 53, Position.WORKER),
- new Employee("Eric", "Jackson", 2534, 22, Position.WORKER),
- new Employee("Andrew", "Bosh", 3456, 44, Position.WORKER),
- new Employee("Joe", "Smith", 723, 30, Position.MANAGER),
- new Employee("Jack", "Gagarin", 7423, 35, Position.MANAGER),
- new Employee("Jane", "London", 7543, 42, Position.WORKER),
- new Employee("Mike", "Jackson", 7534, 31, Position.WORKER),
- new Employee("Jack", "Bosh", 7456, 54, Position.WORKER),
- new Employee("Mark", "Smith", 123, 41, Position.MANAGER),
- new Employee("Jane", "Gagarin", 1423, 28, Position.MANAGER),
- new Employee("Sam", "London", 1543, 52, Position.WORKER),
- new Employee("Jack", "Jackson", 1534, 27, Position.WORKER),
- new Employee("Eric", "Bosh", 1456, 32, Position.WORKER)
+ new Employee("Michael", "Smith", 243, 43, Position.CHEF),
+ new Employee("Jane", "Smith", 523, 40, Position.MANAGER),
+ new Employee("Jury", "Gagarin", 6423, 26, Position.MANAGER),
+ new Employee("Jack", "London", 5543, 53, Position.WORKER),
+ new Employee("Eric", "Jackson", 2534, 22, Position.WORKER),
+ new Employee("Andrew", "Bosh", 3456, 44, Position.WORKER),
+ new Employee("Joe", "Smith", 723, 30, Position.MANAGER),
+ new Employee("Jack", "Gagarin", 7423, 35, Position.MANAGER),
+ new Employee("Jane", "London", 7543, 42, Position.WORKER),
+ new Employee("Mike", "Jackson", 7534, 31, Position.WORKER),
+ new Employee("Jack", "Bosh", 7456, 54, Position.WORKER),
+ new Employee("Mark", "Smith", 123, 41, Position.MANAGER),
+ new Employee("Jane", "Gagarin", 1423, 28, Position.MANAGER),
+ new Employee("Sam", "London", 1543, 52, Position.WORKER),
+ new Employee("Jack", "Jackson", 1534, 27, Position.WORKER),
+ new Employee("Eric", "Bosh", 1456, 32, Position.WORKER)
);
private List deps = List.of(