Необходимо написать свою реализацию коллекции на выбор LinkedList или ArrayList(можно оба варианта).
- Реализовать свой ArrayList (не потокобезопасный) Методы - добавить элемент, добавить элемент по индексу(не заменить), получить элемент, удалить элемент, очистить всю коллекцию, отсортировать, заменить элемент по индексу, остальное по желанию.
- Реализовать алгоритм quicksort для реализованной вами реализации ArrayList. Использовать: ○ Java generics ○ Comparable, Comparator. Не должно быть ограничение на Comparable класс в ArrayList. Сортировка может быть встроенной в ваш ArrayList или быть внешним классом.
- Документировать код. Что, зачем и как. Все классы и интерфейсы должны быть задокументированы на уровне класса (class-level javadoc) Все публичные методы ваших реализаций должны содержать javadoc. Документация должна быть в полном объёме и представлять исчерпывающее и интуитивно понятное руководство пользования вашим кодом для другого разработчика.
- Все части кода должны быть покрыты Unit тестами(Использовать Junit или другую библиотеку). Провести проверки с помощью циклов.
- Использовать maven для добавления junit
- .idea не должно быть в репозитории
- Плюс написать реализацию сортировки пузырьком с флагом, который прекращает сортировку, если коллекция уже отсортирована.
Задание с *: На тему дженериков.
- Для этих коллекций сделать конструктор который будет принимать другую коллекцию в качестве параметров и инициализироваться с элементами из этой коллекции.
- Вторая часть - сделать метод сортировки статическим, этот метод также будет принимать какую-то коллекцию и сортировать ее. (Аналогия Collections.sort()). Т.е подумать на тему какое ключевое слово(extends или super) будет лучше применить для этих двух задач.