Проект содержит две собственные реализации коллекций на Java:
MyCustomArrayList (динамический массив с авто-сортировкой) и MyCustomLinkedList (двусвязный список).
- 📈 Динамический массив
Comparable[]с автоматическим расширением. - ➕ Добавление элементов в конец и по индексу.
- 🔹 Получение и удаление элементов по индексу.
- 🔍 Поиск индекса элемента (
indexOf). - 🛠️ Авто-сортировка после добавления.
- 🖥️ Интерактивное консольное меню с обработкой ошибок ввода.
Добавление элементов: Пустой список: [] Добавляем: apple [ apple ] Добавляем: orange [ apple, orange ] Добавляем: banana (авто-сортировка) [ apple, banana, orange ]
Удаление по индексу 1: Список: [ apple, banana, orange ] Удаляем индекс 1 [ apple, orange ]
Поиск элемента "orange": Список: [ apple, orange ] Элемент найден на позиции 1
- 🧩 Двусвязный список с
Node(prev/next). - ➕ Добавление элементов в начало, конец и по индексу.
- 🔹 Получение и удаление элементов по индексу.
- ✅ Проверка на пустоту (
isEmpty) и размер (size). - 🖥️ Интерактивное меню с безопасным вводом.
Пустой список: [start] <-> [end]
Добавление в конец: Добавляем: hello [start] <-> hello <-> [end] Добавляем: world [start] <-> hello <-> world <-> [end]
Добавление в начало: Добавляем: start [start] <-> start <-> hello <-> world <-> [end]
Удаление по индексу: Удаляем индекс 1 (hello) [start] <-> start <-> world <-> [end]
Получение по индексу 1: Элемент: world Список: [start] <-> start <-> world <-> [end]
Вставка по индексу 1 ("middle"): Вставляем "middle" на индекс 1 [start] <-> start <-> middle <-> world <-> [end]
null <- [prev] Node(data) [next] -> null
Каждый узел хранит:
data— значение узлаprev— ссылка на предыдущий узелnext— ссылка на следующий узел
- Скопировать файлы
MyCustomArrayList.javaиMyCustomLinkedList.java. - Скомпилировать:
javac MyCustomArrayList.java
javac MyCustomLinkedList.java- Запустить:
java MyCustomArrayList- Или
java MyCustomLinkedList- Следовать меню для добавления, удаления, просмотра и поиска элементов.
-
🔹 ArrayList: быстрый доступ по индексу, авторасширение массива, элементы в смежной памяти.
-
🔗 LinkedList: удобная вставка/удаление в середине, каждая нода хранит ссылки на соседей.
-
🖼️ ASCII-анимация в примерах показывает, как изменяется структура после каждой операции.