List
Последовательность с индексами
List<E> хранит элементы в определённом порядке и позволяет обращаться к ним по индексу.
В отличие от массива, список может менять размер: элементы можно добавлять и удалять по ходу работы программы.
Одинаковые значения при этом разрешены.
List<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("SQL");
languages.add("Java");
System.out.println(languages.get(1)); // SQL
Индексация начинается с нуля. Метод get(index) читает элемент,
а set(index, value) заменяет значение на существующей позиции.
Добавление и удаление
Метод add(value) добавляет элемент в конец списка.
Есть и версия add(index, value), которая вставляет элемент в конкретную позицию.
После такой вставки элементы справа сдвигаются по индексам.
List<String> steps = new ArrayList<>();
steps.add("compile");
steps.add("run");
steps.add(1, "test");
steps.remove("test");
System.out.println(steps);
Удалять можно либо по значению, либо по индексу. Эти варианты отличаются смыслом, поэтому особенно внимательно читай вызов, когда список хранит числа.
Готовый список
Если набор значений известен сразу и менять его не нужно, удобно использовать
List.of(...).
List<String> roles = List.of("USER", "ADMIN");
System.out.println(roles.getFirst());
System.out.println(roles.getLast());
Такой список нельзя расширять, сокращать или заменять в нём элементы.
Методы getFirst() и getLast() позволяют явно читать первый и последний элемент списка.
List.
Разницу между его основными реализациями разберём отдельно.