Repository: DzmitryMP/JavaWork
Pull request #4: На основе предыдущего реализованного списка ListNode:
Author: login: DzmitryMP
Created: 2025-04-02T06:58:41Z | Merged: 2025-04-17T07:03:14Z

Дана голова односвязного списка, необходимо написаться метод, который будет возвращать односвязный список, перевёрнутый относительно оригинала


Diff:
diff --git a/Lesson1/src/main/java/homework/work2/CustomList.java b/Lesson1/src/main/java/homework/work2/CustomList.java
new file mode 100644
index 0000000..cc8464e
--- /dev/null
+++ b/Lesson1/src/main/java/homework/work2/CustomList.java
@@ -0,0 +1,106 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList {
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public int getSize() {
+        return size;
+    }
+
+    public void add(Object obj) {
+
+        if (obj != null) {
+            if (size == arrObj.length) {
+                arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+            }
+            arrObj[size++] = obj;
+        }
+    }
+
+    public void addArr(Object[] objArr) {
+        if (objArr != null) {
+            for (Object obj : objArr) {
+                add(obj);
+            }
+        }
+    }
+
+    public void addArr(CustomList objArr) {
+        if (objArr != null) {
+            for (int i = 0; i < objArr.size - 1; i++) {
+                add(objArr.getObj(i));
+            }
+        }
+    }
+
+    public boolean del(int index) {
+
+        if (index < 0 || index >= size) {
+            return false;
+        }
+
+        // Сдвигаем все элементы после удаляемого на одну позицию влево
+        for (int i = index; i < size - 1; i++) {
+            arrObj[i] = arrObj[i + 1];
+        }
+        arrObj[size - 1] = null;
+        size--;
+        return true;
+    }
+
+    public boolean del(Object obj) {
+
+        if (obj != null) {
+            for (int i = 0; i < size; i++) {
+                if (obj.equals(arrObj[i])) {  // Сравниваем элементы
+                    return del(i);
+                }
+            }
+        }
+        return false;
+    }
+
+
+    public void print() {
+
+        for (int i = 0; i < size; i++) {
+            System.out.print(arrObj[i]);
+            if (i < size - 1) {
+                System.out.print(", ");
+            }
+        }
+        System.out.println();
+    }
+
+    public Object getObj(int i) {
+        return arrObj[i];
+
+    }
+
+    public boolean find(Object obj) {
+        if (obj != null) {
+            for (int i = 0; i < size; i++) {
+                if (obj.equals(arrObj[i])) {  // Сравниваем элементы
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+
+}
diff --git a/Lesson1/src/main/java/homework/work2/ListNode.java b/Lesson1/src/main/java/homework/work2/ListNode.java
index 03c9ce7..fe3d985 100644
--- a/Lesson1/src/main/java/homework/work2/ListNode.java
+++ b/Lesson1/src/main/java/homework/work2/ListNode.java
@@ -13,6 +13,20 @@ public ListNode(int val, ListNode next) {
         this.next = next;
     }
 
+    public static ListNode reverseListNode(ListNode head) {
+        ListNode prev = null;
+        ListNode current = head;
+
+        while (current != null) {
+            ListNode next = current.next;
+            current.next = prev;
+            prev = current;
+            current = next;
+        }
+
+        return prev;
+    }
+
     public static void print(ListNode head) {
         ListNode current = head;
         while (current != null) {
diff --git a/Lesson1/src/main/java/homework/work2/StartListNode.java b/Lesson1/src/main/java/homework/work2/StartListNode.java
index 81794d5..5fe5101 100644
--- a/Lesson1/src/main/java/homework/work2/StartListNode.java
+++ b/Lesson1/src/main/java/homework/work2/StartListNode.java
@@ -10,5 +10,38 @@ public static void main(String[] args) {
         ListNode head1 = new ListNode(1, node2);
 
         ListNode.print(head1);
+
+        ListNode head6 = ListNode.reverseListNode(head1);
+
+        ListNode.print(head6);
+
+        CustomList head7 = new CustomList();
+        head7.add(head6);
+        head7.add(head1);
+        head7.print();
+
+        String[] arrStr = new String[]{"Java", "Python", "C++"};
+        CustomList myList = new CustomList();
+        myList.add("Привет");
+        myList.add("Мир");
+        myList.addArr(arrStr);
+        myList.print();
+
+
+       if (myList.del(1)) {
+            System.out.println("Удалили элемент");
+        };
+        myList.print();
+
+        myList.del("Python");
+        myList.print();
+
+
+
+
+        //----------------------------------------
+
+
+
     }
 }
diff --git a/Lesson1/src/main/java/homework/work2/libary/Author.java b/Lesson1/src/main/java/homework/work2/libary/Author.java
new file mode 100644
index 0000000..2c9b321
--- /dev/null
+++ b/Lesson1/src/main/java/homework/work2/libary/Author.java
@@ -0,0 +1,50 @@
+package homework.work2.libary;
+
+import java.util.Date;
+import java.util.Objects;
+
+public class Author {
+    private final String firstName;
+    private final String lastName;
+    private final Date birthDate;
+
+    public Author(String firstName, String lastName, Date birthDate) {
+        this.firstName = firstName;
+        this.lastName = lastName;
+        this.birthDate = birthDate;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public Date getBirthDate() {
+        return birthDate;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Author author = (Author) o;
+        return Objects.equals(firstName, author.firstName) && Objects.equals(lastName, author.lastName) && Objects.equals(birthDate, author.birthDate);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(firstName, lastName, birthDate);
+    }
+
+    @Override
+    public String toString() {
+        return "Author{" +
+                "firstName='" + firstName + '\'' +
+                ", lastName='" + lastName + '\'' +
+                ", birthDate=" + birthDate +
+                '}';
+    }
+}
diff --git a/Lesson1/src/main/java/homework/work2/libary/Book.java b/Lesson1/src/main/java/homework/work2/libary/Book.java
new file mode 100644
index 0000000..222f8aa
--- /dev/null
+++ b/Lesson1/src/main/java/homework/work2/libary/Book.java
@@ -0,0 +1,51 @@
+package homework.work2.libary;
+
+import java.util.Objects;
+
+public class Book {
+
+    private final String name;
+    private final Author author;
+    private final String text;
+
+
+    public Book(String name, Author author, String text) {
+
+        this.name = name;
+        this.author = author;
+        this.text = text;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Author getAuthor() {
+        return author;
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Book book = (Book) o;
+        return Objects.equals(name, book.name) && Objects.equals(author, book.author);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(name, author);
+    }
+
+    @Override
+    public String toString() {
+        return "Book{" +
+                "author=" + author +
+                ", name='" + name + '\'' +
+                '}';
+    }
+}
diff --git a/Lesson1/src/main/java/homework/work2/libary/Library.java b/Lesson1/src/main/java/homework/work2/libary/Library.java
new file mode 100644
index 0000000..5ed3f61
--- /dev/null
+++ b/Lesson1/src/main/java/homework/work2/libary/Library.java
@@ -0,0 +1,46 @@
+package homework.work2.libary;
+
+import homework.work2.CustomList;
+
+public class Library {
+
+
+    private final CustomList libraryBooks = new CustomList();
+
+    public boolean addBook(Book book) {
+        if (!libraryBooks.find(book)) {
+            libraryBooks.add(book);
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+
+    public Book findBook(String title, Author author) {
+
+        Book findBooks = new Book(title, author, null);
+
+        for (int i = 0; i < libraryBooks.getSize(); i++) {
+            Book book = (Book) libraryBooks.getObj(i);
+            if (book.equals(findBooks)) {
+                return book;
+            }
+        }
+        return null;
+    }
+
+    // Находит все книги указанного автора
+    public CustomList findBooksByAuthor(Author author) {
+        CustomList books = new CustomList();
+        for (int i = 0; i < libraryBooks.getSize(); i++) {
+            Book book =  (Book)  libraryBooks.getObj(i);
+            if (book.getAuthor().equals(author)) {
+                books.add(book);
+            }
+        }
+        return books;
+    }
+
+
+}
diff --git a/Lesson1/src/main/java/homework/work2/libary/startLibery.java b/Lesson1/src/main/java/homework/work2/libary/startLibery.java
new file mode 100644
index 0000000..d04d7ae
--- /dev/null
+++ b/Lesson1/src/main/java/homework/work2/libary/startLibery.java
@@ -0,0 +1,39 @@
+package homework.work2.libary;
+
+
+import homework.work2.CustomList;
+
+import java.util.Date;
+
+public class startLibery {
+    public static void main(String[] args) {
+        Author tolstoy = new Author("Лев", "Толстой", new Date(1828, 9, 9));
+        Author dostoevsky = new Author("Фёдор", "Достоевский", new Date(1821, 11, 11));
+        Author pushkin = new Author("Александр", "Пушкин", new Date(1799, 6, 6));
+
+        Library library = new Library();
+
+        library.addBook(new Book("Война и мир", tolstoy, "Текст Войны и мира..."));
+        library.addBook(new Book("Анна Каренина", tolstoy, "Текст Анны Карениной..."));
+        library.addBook(new Book("Преступление и наказание", dostoevsky, "Текст Преступления..."));
+        library.addBook(new Book("Идиот", dostoevsky, "Текст Идиота..."));
+        library.addBook(new Book("Евгений Онегин", pushkin, "Текст Онегина..."));
+        library.addBook(new Book("Капитанская дочка", pushkin, "Текст Капитанской дочки..."));
+        library.addBook(new Book("Война и мир", tolstoy, "Другой текст")); // Не добавится (дубликат)
+
+        System.out.println("Поиск 'Война и мир' Толстого:");
+        Book foundBook = library.findBook("Война и мир", tolstoy);
+        if (foundBook != null) {
+            System.out.println(foundBook);
+        } else {
+            System.out.println("Не найдено");
+
+        }
+        System.out.println("Все книги Толстого:");
+        CustomList tolstoyBooks = library.findBooksByAuthor(tolstoy);
+        for (int i = 0; i < tolstoyBooks.getSize(); i++) {
+            System.out.println(tolstoyBooks.getObj(i));
+        }
+    }
+
+}


Reviews:
user: login: oleg-seiko
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-03T04:50:45Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-03T04:53:43Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-03T04:53:50Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-03T04:53:52Z
user: login: oleg-seiko
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-03T04:58:35Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-03T04:59:53Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-14T13:10:48Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-14T13:11:35Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-14T13:11:53Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-14T13:12:13Z
user: login: oleg-seiko
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-15T05:20:35Z
user: login: oleg-seiko
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-15T05:21:53Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-15T14:05:49Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-16T08:57:38Z
user: login: oleg-seiko
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-17T05:28:00Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-17T05:31:21Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-17T05:31:34Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-17T05:34:32Z
user: login: DzmitryMP
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-17T05:49:23Z
user: login: oleg-seiko
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-04-17T07:00:05Z

Review comments:
diff_hunk: @@ -13,6 +13,20 @@ public ListNode(int val, ListNode next) {
         this.next = next;
     }
 
+    public static ListNode reverseListNode(ListNode head) {
+        ListNode prev = null;
+        ListNode current = head;
+
+        while (current != null) {
path: Lesson1/src/main/java/homework/work2/ListNode.java
user: login: oleg-seiko
body: можешь проверить работоспособность своего кода тут
https://leetcode.com/problems/reverse-linked-list/
потом плз пришли скрин того что получилось в этом трэде
created_at: 2025-04-03T04:43:24Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: oleg-seiko
body: это конечно более правильный подход, но мы ещё дженерики не проходили, хотелось бы чтобы задача была решена без их использования(об этом я писал в трэде к задаче на вопрос Игоря Т)
если реально с ними разобрался то ок, оставляй, но тогда я могу задавать вопросы по этой теме?)
если не уверен, то рекомендую пока что переделать без их использования
created_at: 2025-04-03T04:46:27Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(T obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(T... objArr) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: oleg-seiko
body: такую конструкцию с тремя точками мы тоже не проходили, но даже если так - а если нам надо добавить 1к элементов, все будешь перечислять через запятую?
рекомендую в качестве параметра метода передавать наш объект CustomList
created_at: 2025-04-03T04:48:24Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(T obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(T... objArr) {
+        for (T obj : objArr) {
+            add(obj);
+        }
+    }
+
+    public void del(int index) {
+
+        // Сдвигаем все элементы после удаляемого на одну позицию влево
+        for (int i = index; i < size - 1; i++) {
+            arrObj[i] = arrObj[i + 1];
+        }
+        arrObj[size - 1] = null;
+        size--;
+
+    }
+
+    public void del(T obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: oleg-seiko
body: как будто было бы здорово клиенту нашего кода дать понять насколько успешно прошла операцию удаления, как будем это делать?
created_at: 2025-04-03T04:49:15Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(T obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(T... objArr) {
+        for (T obj : objArr) {
+            add(obj);
+        }
+    }
+
+    public void del(int index) {
+
+        // Сдвигаем все элементы после удаляемого на одну позицию влево
+        for (int i = index; i < size - 1; i++) {
+            arrObj[i] = arrObj[i + 1];
+        }
+        arrObj[size - 1] = null;
+        size--;
+
+    }
+
+    public void del(T obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: Вывести сообщение 

created_at: 2025-04-03T04:53:43Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(T obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(T... objArr) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: переделаю
created_at: 2025-04-03T04:53:50Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: Переделаю
created_at: 2025-04-03T04:53:52Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(T obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(T... objArr) {
+        for (T obj : objArr) {
+            add(obj);
+        }
+    }
+
+    public void del(int index) {
+
+        // Сдвигаем все элементы после удаляемого на одну позицию влево
+        for (int i = index; i < size - 1; i++) {
+            arrObj[i] = arrObj[i + 1];
+        }
+        arrObj[size - 1] = null;
+        size--;
+
+    }
+
+    public void del(T obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: oleg-seiko
body: представь что тебе после удаления надо сделать проверку, то-то вроде "если элемент удалился, то надо сделать что-то, а если не удалился, то сделать что-то другое", думаю сообщение в консоли ты парсить не будешь для этого =)
created_at: 2025-04-03T04:58:35Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(T obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(T... objArr) {
+        for (T obj : objArr) {
+            add(obj);
+        }
+    }
+
+    public void del(int index) {
+
+        // Сдвигаем все элементы после удаляемого на одну позицию влево
+        for (int i = index; i < size - 1; i++) {
+            arrObj[i] = arrObj[i + 1];
+        }
+        arrObj[size - 1] = null;
+        size--;
+
+    }
+
+    public void del(T obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: вернуть тру фолс 

created_at: 2025-04-03T04:59:53Z
author_association: OWNER
diff_hunk: @@ -13,6 +13,20 @@ public ListNode(int val, ListNode next) {
         this.next = next;
     }
 
+    public static ListNode reverseListNode(ListNode head) {
+        ListNode prev = null;
+        ListNode current = head;
+
+        while (current != null) {
path: Lesson1/src/main/java/homework/work2/ListNode.java
user: login: DzmitryMP
body: ![image](https://github.com/user-attachments/assets/f70be3c0-d177-43b5-aadc-d567d6496293)

created_at: 2025-04-14T13:10:48Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: Поправил
created_at: 2025-04-14T13:11:35Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(T obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(T... objArr) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: поправил
created_at: 2025-04-14T13:11:53Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(T obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(T... objArr) {
+        for (T obj : objArr) {
+            add(obj);
+        }
+    }
+
+    public void del(int index) {
+
+        // Сдвигаем все элементы после удаляемого на одну позицию влево
+        for (int i = index; i < size - 1; i++) {
+            arrObj[i] = arrObj[i + 1];
+        }
+        arrObj[size - 1] = null;
+        size--;
+
+    }
+
+    public void del(T obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: поправил
created_at: 2025-04-14T13:12:13Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(T obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(T... objArr) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: oleg-seiko
body: рекомендую в качестве параметра метода передавать наш объект CustomList - выше писал, что лучше в качестве параметра не делать массив и именно твой собственный объект - это уже же и есть список только обёрнутый объектом, в реальной жизни массивы использоваться практически не будут, будут вот такие объекты-обёртки.
в общем, если есть время и желание сделай ещё один метод, который будет принимать объект, если нет - просто закрой трэд.
created_at: 2025-04-15T05:20:35Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,69 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList {
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(Object obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(Object[] objArr) {
+        for (Object obj : objArr) {
+            add(obj);
+        }
+    }
+
+    public boolean del(int index) {
+
+        if (index < 0 || index >= size) {
+            return false;
+        }
+
+        // Сдвигаем все элементы после удаляемого на одну позицию влево
+        for (int i = index; i < size - 1; i++) {
+            arrObj[i] = arrObj[i + 1];
+        }
+        arrObj[size - 1] = null;
+        size--;
+        return true;
+    }
+
+    public boolean del(Object obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: oleg-seiko
body: если сюда придёт null - программа упадёт
created_at: 2025-04-15T05:21:52Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,69 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList {
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(Object obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(Object[] objArr) {
+        for (Object obj : objArr) {
+            add(obj);
+        }
+    }
+
+    public boolean del(int index) {
+
+        if (index < 0 || index >= size) {
+            return false;
+        }
+
+        // Сдвигаем все элементы после удаляемого на одну позицию влево
+        for (int i = index; i < size - 1; i++) {
+            arrObj[i] = arrObj[i + 1];
+        }
+        arrObj[size - 1] = null;
+        size--;
+        return true;
+    }
+
+    public boolean del(Object obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: Добавил проверку на null 

created_at: 2025-04-15T14:05:49Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,63 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList<T> { // <T> означает, что список может работать с любым типом
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(T obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(T... objArr) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: сделал еще метод 

created_at: 2025-04-16T08:57:38Z
author_association: OWNER
diff_hunk: @@ -66,4 +84,19 @@ public void print() {
         System.out.println();
     }
 
+    public Object getObj(int i) {
+        return arrObj[i];
+
+    }
+
+    public boolean find(Object obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: oleg-seiko
body: снова - если сюда придёт null - программа упадёт
created_at: 2025-04-17T05:22:04Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,69 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList {
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(Object obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(Object[] objArr) {
+        for (Object obj : objArr) {
+            add(obj);
+        }
+    }
+
+    public boolean del(int index) {
+
+        if (index < 0 || index >= size) {
+            return false;
+        }
+
+        // Сдвигаем все элементы после удаляемого на одну позицию влево
+        for (int i = index; i < size - 1; i++) {
+            arrObj[i] = arrObj[i + 1];
+        }
+        arrObj[size - 1] = null;
+        size--;
+        return true;
+    }
+
+    public boolean del(Object obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: oleg-seiko
body: ну теперь получается мы не можем добавлять и удалять из списка null объекты, что не оч хорошо.
НО учитывая, что в задании ничего не было по этому поводу - ок
created_at: 2025-04-17T05:23:35Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,50 @@
+package homework.work2.libary;
+
+import java.util.Date;
+import java.util.Objects;
+
+public class Author {
+    private final String firstName;
+    private final String lastName;
+    private final Date   birthDate;
path: Lesson1/src/main/java/homework/work2/libary/Author.java
user: login: oleg-seiko
body: чё-то много пробелов между типом и именем
created_at: 2025-04-17T05:25:00Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,46 @@
+package homework.work2.libary;
+
+import homework.work2.CustomList;
+
+public class Library {
+
+
+    private final CustomList libraryBooks = new CustomList();
+
+    public boolean addBook(Book book) {
+        if (!libraryBooks.find(book)) {
+            libraryBooks.add(book);
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+
+    public Book findBook(String title, Author author) {
+
+        Book findBooks = new Book(title, author, null);
+
+        for (int i = 0; i < libraryBooks.getSize(); i++) {
+            Book book = (Book) libraryBooks.getObj(i);
+            if (book.equals(findBooks)) {
+                return book;
+            }
+        }
+        return null;
+    }
+
+    // Находит все книги указанного автора
+    public CustomList findBooksByAuthor(Author author) {
+        CustomList books = new CustomList();
+        for (int i = 0; i < libraryBooks.getSize(); i++) {
+            Book book =  (Book)  libraryBooks.getObj(i);
+            if (book.getAuthor().equals(author)) {
path: Lesson1/src/main/java/homework/work2/libary/Library.java
user: login: oleg-seiko
body: если будешь реализовывать, чтобы в твоём списке могли содержаться null, тогда тут придётся делать проверку
created_at: 2025-04-17T05:27:47Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,50 @@
+package homework.work2.libary;
+
+import java.util.Date;
+import java.util.Objects;
+
+public class Author {
+    private final String firstName;
+    private final String lastName;
+    private final Date   birthDate;
path: Lesson1/src/main/java/homework/work2/libary/Author.java
user: login: DzmitryMP
body: убрал пробелы
created_at: 2025-04-17T05:31:21Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,46 @@
+package homework.work2.libary;
+
+import homework.work2.CustomList;
+
+public class Library {
+
+
+    private final CustomList libraryBooks = new CustomList();
+
+    public boolean addBook(Book book) {
+        if (!libraryBooks.find(book)) {
+            libraryBooks.add(book);
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+
+    public Book findBook(String title, Author author) {
+
+        Book findBooks = new Book(title, author, null);
+
+        for (int i = 0; i < libraryBooks.getSize(); i++) {
+            Book book = (Book) libraryBooks.getObj(i);
+            if (book.equals(findBooks)) {
+                return book;
+            }
+        }
+        return null;
+    }
+
+    // Находит все книги указанного автора
+    public CustomList findBooksByAuthor(Author author) {
+        CustomList books = new CustomList();
+        for (int i = 0; i < libraryBooks.getSize(); i++) {
+            Book book =  (Book)  libraryBooks.getObj(i);
+            if (book.getAuthor().equals(author)) {
path: Lesson1/src/main/java/homework/work2/libary/Library.java
user: login: DzmitryMP
body: нет не буду)))) 
created_at: 2025-04-17T05:31:34Z
author_association: OWNER
diff_hunk: @@ -66,4 +84,19 @@ public void print() {
         System.out.println();
     }
 
+    public Object getObj(int i) {
+        return arrObj[i];
+
+    }
+
+    public boolean find(Object obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: поправил
created_at: 2025-04-17T05:34:32Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,69 @@
+package homework.work2;
+
+import java.util.Arrays;
+
+public class CustomList {
+    private Object[] arrObj;
+    private int size;
+
+    public CustomList() {
+        this.arrObj = new Object[10];
+        this.size = 0;
+    }
+
+    public CustomList(int i) {
+
+        this.arrObj = new Object[i];
+        this.size = 0;
+    }
+
+    public void add(Object obj) {
+        if (size == arrObj.length) {
+            arrObj = Arrays.copyOf(arrObj, arrObj.length + 1);
+        }
+        arrObj[size++] = obj;
+    }
+
+    public void addArr(Object[] objArr) {
+        for (Object obj : objArr) {
+            add(obj);
+        }
+    }
+
+    public boolean del(int index) {
+
+        if (index < 0 || index >= size) {
+            return false;
+        }
+
+        // Сдвигаем все элементы после удаляемого на одну позицию влево
+        for (int i = index; i < size - 1; i++) {
+            arrObj[i] = arrObj[i + 1];
+        }
+        arrObj[size - 1] = null;
+        size--;
+        return true;
+    }
+
+    public boolean del(Object obj) {
path: Lesson1/src/main/java/homework/work2/CustomList.java
user: login: DzmitryMP
body: Ок можно закрывать делать прием нулл не буду 
created_at: 2025-04-17T05:49:23Z
author_association: OWNER

PR comments:
user: login: DzmitryMP
created_at: 2025-04-14T13:13:50Z
body: @oleg-seiko Жду  для апрува

author_association: OWNER
user: login: DzmitryMP
created_at: 2025-04-15T14:06:16Z
body: В этой ветке сделал и библиотеку 

author_association: OWNER
user: login: DzmitryMP
created_at: 2025-04-17T05:49:48Z
body: Все замечания поправил 
=
author_association: OWNER