diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index bfd703e..017426c 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -9,5 +9,8 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/example/Bar.java b/src/main/java/org/example/Bar.java
new file mode 100644
index 0000000..c054324
--- /dev/null
+++ b/src/main/java/org/example/Bar.java
@@ -0,0 +1,21 @@
+package org.example;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class Bar{
+
+ /* Я выбрал именно HashMap, потому что добавление и получение элементов у нас работают за O(1),
+ при условии, что хэш функция определена нормально, если я прав, то тут мы сраваниваем строки, а для String метод
+ equals() уже переопределён, а значит и hashCode() тоже (по идее).
+ */
+ public Map tickets = new HashMap<>();
+
+ public void addVisitor(String hexadecimalNumber, String additions){
+ tickets.put(hexadecimalNumber, additions);
+ }
+
+ public String getProduct(String number){
+ return tickets.get(number);
+ }
+}
diff --git a/src/main/java/org/example/Book.java b/src/main/java/org/example/Book.java
new file mode 100644
index 0000000..846faa1
--- /dev/null
+++ b/src/main/java/org/example/Book.java
@@ -0,0 +1,21 @@
+package org.example;
+
+public class Book {
+
+ String title;
+ String author;
+ Integer yearOfPublication;
+
+
+ public Integer getYear(){
+ return this.yearOfPublication;
+ }
+
+ public String getTitle(){
+ return this.title;
+ }
+
+ public String getAuthor(){
+ return this.author;
+ }
+}
diff --git a/src/main/java/org/example/library.java b/src/main/java/org/example/library.java
new file mode 100644
index 0000000..65d5435
--- /dev/null
+++ b/src/main/java/org/example/library.java
@@ -0,0 +1,69 @@
+package org.example;
+
+import java.util.*;
+
+public class library {
+
+
+ /*
+ Я очень долго мучался с выбором более сложной коллекции, но у меня
+ возникали большие трусдности с реализацией методов поиска, поэтому я решил
+ обратиться к листам, выбор пал на LinkedList т.к. к элементам по индексу мы почти не обращаемся
+ а вставка/ удаление будет происходить чаще и быстрее засчёт двусвязного списка.
+ сами же операции будут проходить за O(n) т.к. в каждом методе мы итерируемся по коллекции до n-го элемента.
+ последний метод getFromIntervalOfPublic тоже будет за O(n) т.к. я сделал сортировку по годам.
+ */
+ public List library = new LinkedList<>();
+
+ public void addBook(Book book){
+ library.add(book);
+ library.sort(Comparator.comparing(Book::getYear));
+ }
+
+ public void removeBook(Book book){
+ library.remove(book);
+ }
+
+ public List getFromTitle(String title){
+ List result = new LinkedList<>();
+ for(Book book : library){
+ if(Objects.equals(book.getTitle(), title)){
+ result.add(book);
+ }
+ }
+ return result;
+ }
+
+ public List getFromAuthor(String author){
+ List result = new LinkedList<>();
+ for(Book book : library){
+ if(Objects.equals(book.getAuthor(), author)){
+ result.add(book);
+ }
+ }
+ return result;
+ }
+
+ public List getFromYear(Integer year){
+ List result = new LinkedList<>();
+ for(Book book : library){
+ if(Objects.equals(book.getYear(), year)){
+ result.add(book);
+ }
+ }
+ return result;
+ }
+
+ // выдаст все книги [start;end], где start - начальный год, end - конечный
+ public List getFromIntervalOfPublic(int start, int end){
+ List result = new LinkedList<>();
+ for(Book book : library){
+ if(book.getYear() >= start){
+ result.add(book);
+ }
+ if(book.getYear() > end)
+ break;
+ }
+ return result;
+ }
+}