List, ArrayList, LinkedList

List

List — это интерфейс в Java, представляющий упорядоченную коллекцию, допускающую дублирование элементов. Основные реализации интерфейса List включают ArrayList и LinkedList.

ArrayList

ArrayList — это класс, реализующий интерфейс List, основанный на динамическом массиве. Он предоставляет быстрый доступ к элементам по индексу и эффективен для операций добавления и удаления элементов в конце списка.

Основные методы ArrayList

Создание ArrayList:
List<String> arrayList = new ArrayList<>();


Добавление элементов:
arrayList.add("Apple");
arrayList.add("Banana");
arrayList.add("Orange");


Доступ по индексу:
String fruit = arrayList.get(0); // "Apple"


Изменение элемента:
arrayList.set(1, "Grapes"); // Изменяет "Banana" на "Grapes"


Удаление элемента:
arrayList.remove(0); // Удаляет "Apple"


Размер списка:
int size = arrayList.size(); // 2


Перебор элементов:
for (String fruit : arrayList) {
System.out.println(fruit);
}



LinkedList

LinkedList — это класс, реализующий интерфейс List, основанный на двусвязном списке. Он предоставляет эффективное добавление и удаление элементов в середине списка, но доступ по индексу медленнее по сравнению с ArrayList.

Основные методы LinkedList

Создание LinkedList:
List<String> linkedList = new LinkedList<>();


Добавление элементов:
linkedList.add("Apple");
linkedList.add("Banana");
linkedList.add("Orange");


Доступ по индексу:
String fruit = linkedList.get(0); // "Apple"


Изменение элемента:
linkedList.set(1, "Grapes"); // Изменяет "Banana" на "Grapes"


Удаление элемента:
linkedList.remove(0); // Удаляет "Apple"


Размер списка:
int size = linkedList.size(); // 2


Перебор элементов:
for (String fruit : linkedList) {
System.out.println(fruit);
}


Сравнение ArrayList и LinkedList

Структура данных:

ArrayList основан на динамическом массиве.
LinkedList основан на двусвязном списке.


Доступ по индексу:

ArrayList обеспечивает быстрый доступ по индексу (O(1)).
LinkedList медленнее при доступе по индексу (O(n)).


Добавление и удаление элементов:

ArrayList быстрее добавляет и удаляет элементы в конце списка (O(1)).
LinkedList быстрее добавляет и удаляет элементы в середине списка (O(1) для добавления/удаления с начала/конца, O(n) для доступа по индексу).


Использование памяти:

ArrayList использует меньше памяти, так как хранит элементы в массиве.
LinkedList использует больше памяти из-за хранения ссылок на предыдущий и следующий элементы.


#Java #Training #Collections