Топ-100Коллекции. Интерфейс List - CodOrbits
LogoCodOrbits

Раздел: Коллекции

Изучите Java Collections Framework: List, Set, Map и другие структуры данных для эффективной работы с данными

Все разделы
Иконка Коллекции

Коллекции. Интерфейс 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

Additional Material Icon
Divider

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

Additional Material Icon
Divider

Руководство по коллекциям от Baeldung

Additional Material Icon

Следующие уроки

Iterator в коллекциях Java

8
мин.

Similar Articles Icon
Divider

Интерфейс Queue в Java

9
мин.

Similar Articles Icon
Divider

Интерфейс Map в Java

16
мин.

Similar Articles Icon