Коллекции в Java. Интерфейс List
Last updated: 5 мая 2025 г.Что же такое коллекция?
Это можно сказать такой особый тип массива.
Мы знаем, что у обычного Java массива есть строгая граница количества элементов, которые могут в нем быть (эту границу мы задаем при инициализации вот так – int [] a = new int[5]).
Это называется статический массив.
Но часто может пригодиться динамический массив, то есть который может расширяться.
То есть у него нет фиксированно возможного количества элементов.
В Java в библиотеке Collections есть много разных динамических массивов каждый из которых нужен для разных задач и ситуаций.
То есть они не просто динамические массивы, а еще и имеют разную структуру и применение.
Поэтому в Java корректно называть их не просто “динамическими массивами”, а коллекциями.
Есть четыре основных вида коллекций List, Queue, Set и Map.
Каждая из коллекций имеет свои подвиды, которые мы будем разбирать.
Важно упомянуть что List, Queue, Set и Map это интерфейсы которые имеют разные реализации (подвиды).
ArrayList
Для начала разберем реализации List.
Благодаря классам реализующим List можно создать динамически изменяющийся массив.
Первый подвид List, который мы рассмотрим это ArrayList.
ArrayList – лучше использовать когда часто нужен доступ по индексу
Пример программы:
1import java.util.*;
2
3public class ListLesson {
4 public static void main(String[] args) {
5 //Создаем список.
6 //Как видим никакого размера не указываем
7 ArrayList aList = new ArrayList();
8 // добавление элемента
9 aList.add("Sunday");
10 aList.add("Monday");
11 aList.add("Tuesday");
12 // удаление элемента
13 aList.remove("Monday");
14 //Доступ к каждому элементу с помощью get.
15 //метод get для доступа к элементам по индексу
16 for(int i = 0; i< aList.size(); i++) {
17 System.out.println(aList.get(i));
18 }
19 // проверка на наличие элемента в списке
20 System.out.println(aList.contains("Tuesday"));
21 }
22}Вывод:

LinkedList
LinkedList – лучше использовать когда часто производиться вставка/удаление из массива, занимает больше памяти чем ArrayList.
Пример программы:
1import java.util.*;
2
3public class ListLesson {
4 public static void main(String[] args) {
5 // Создать новый объект LinkedList
6 LinkedList llist = new LinkedList();
7 // Добавление элементов в связанный список
8 // тем же методом что и у ArrayList.
9 llist.add("Days in a Week"); // добавить
10 // Добавить в произвольное место связанного списка
11 llist.add(1, "Middle");
12 llist.add(2, "End");
13 // Удаление элемента
14 llist.remove("End");
15 // Если не вписать аргумент, то удалится элемент,
16 // который был добавлен в массив наиболее давно.
17 llist.remove();
18 // Доступ к каждому элементу с помощью get
19 for (int i = 0; i < llist.size(); i++) {
20 System.out.println(llist.get(i));
21 }
22 // проверка на наличие элемента в списке
23 System.out.println(llist.contains("Tuesday"));
24 }
25}Вывод:

Из реализаций List есть еще Vector – это как ArrayList, только синхронизирован(для работы с потоками, их будем проходить потом).
Конвертация коллекции из одного типа в другой.
Можно при создании коллекции поместить в нее элементы из другой ранее созданной коллекции.
При этом эта другая коллекция может быть другого типа по отношению к создаваемой. То есть фактически это значит, что возможно менять тип коллекции.
Пример программы:
1import java.util.*;
2
3class ListLesson {
4 public static void main(String[] args) {
5 // создаем список
6 ArrayList aList = new ArrayList();
7 aList.add("Sunday");
8 aList.add("Monday");
9 aList.add("Tuesday");
10
11 // Создать новый объект LinkedList
12 LinkedList lList = new LinkedList();
13 lList.add("Days in a Week");
14 lList.add(1, "Middle");
15 lList.add(2, "End");
16
17 //Можно создать коллекцию с элементами другой коллекции
18 //другого типа. Можно сказать, что снизу мы поменяли тип
19 //ранее созданной коллекции lList с LinkedList на ArrayList.
20 ArrayList< String > LinkedToArray = new ArrayList<>(lList);
21 LinkedList< String > ArrayToLinked = new LinkedList<>(aList);
22
23 //Выведем на консоль коллекции
24 for(int i = 0; i < LinkedToArray.size(); i++) {
25 System.out.println(LinkedToArray.get(i));
26 }
27 for(int i = 0; i< ArrayToLinked.size(); i++) {
28 System.out.println(ArrayToLinked.get(i));
29 }
30
31 //также можно задать значение
32 //начального размера внутреннего массива
33 ArrayList< String > list2 = new ArrayList<>(10000);
34 }
35}Вывод:

Дополнительные материалы
Официальная документация Java по интерфейсу List
Сравнение ArrayList и LinkedList на GeeksforGeeks
Руководство по коллекциям от Baeldung
Следующие уроки
Iterator в коллекциях Java
8
мин.
Интерфейс Queue в Java
9
мин.
Интерфейс Map в Java
16
мин.
