Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Списки Java: Коллекции

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

ArrayList

Класс ArrayList – реализация интерфейса List. Представляет собой автоматически расширяемый массив. ArrayList может менять свой размер во время исполнения программы

// Создаём новый экземпляр ArrayList
List<String> list = new ArrayList<>();

System.out.println(list); // => []

// Добавляем элементы в список
list.add("1");
list.add(null);
list.add(null);
list.add("2");
list.add("3");
list.add("3");

System.out.println(list); //=> [1, null, null, 2, 3, 3]

list.remove(0);
System.out.println(list); // => [null, null, 2, 3, 3]

list.remove("3");
list.remove("4");
System.out.println(list); // => [null, null, 2, 3]

System.out.println(list.size()); // => 4

List<String> insertedList = new ArrayList<>();
insertedList.add("1");
insertedList.add("2");
insertedList.add("7");
insertedList.add("7");
System.out.println(insertedList); // => [1, 2, 7, 7]

list.addAll(2, insertedList);
System.out.println(list); // => [null, null, 1, 2, 7, 7, 2, 3]

System.out.println(list.indexOf("7")); // => 4
System.out.println(list.get(3)); // => 2
System.out.println(list.isEmpty()); // => false
System.out.println(list.contains("2")); // => true
System.out.println(list.contains("11")); // => false


for (String s: list) {
    System.out.println("element of list: " + s);
}

Вывод на экран:

element of list: null
element of list: null
element of list: 1
element of list: 2
element of list: 7
element of list: 7
element of list: 2
element of list: 3
ArrayList<String> arrayList = (ArrayList<String>) list;
System.out.println(list); // => [null, null, 1, 2, 7, 7, 2, 3]

LinkedList

Класс LinkedList — еще одна реализация интерфейса List. Представляет из себя двусвязный список, где каждый элемент структуры содержит ссылки на предыдущий и следующий элементы. По этим ссылкам можно переходить от одного элемента к другому.

// Создаём новый экземпляр двусвязного списка
List<Integer> list = new LinkedList<>();

// Добавляем/удаляем элементы
list.add(1);
list.add(2);
list.add(null);
list.add(3);
list.add(4);
list.remove(1);
list.add(null);

System.out.println(list); // => [1, null, 3, 4, null]

System.out.println(list.size()); // => 5
System.out.println(list.get(0)); // => 1
System.out.println(list.indexOf(3)); // => 2

LinkedList<Integer> linkedList = (LinkedList<Integer>) list;

// Получаем, но не удаляем первый элемент списка
System.out.println(linkedList.peek()); // => 1
System.out.println(list); // => [1, null, 3, 4, null]

// Получаем и удаляем первый элемент списка
System.out.println(linkedList.poll()); // => 1
System.out.println(linkedList); // => [null, 3, 4, null]

// Вставляем элемент в начало списка
linkedList.addFirst(3);
System.out.println(linkedList); // => [3, null, 3, 4, null]

for (Integer num: linkedList) {
    System.out.println("int: " + num);
}

Вывод на экран:

int: 3
int: null
int: 3
int: 4
int: null

Домашнее задание

Начиная с этого курса в уроках будут содержаться команды для скачивания домашних заданий. Студенты скачивают домашние задания и выполняют их локально на своих компьютерах. Затем решения загружаются в репозиторий на GitLab для проверки наставником. Чтобы автоматизировать и упростить работу с домашними заданиями, мы написали специальную утилиту – hexlet/cli. Подробнее о том, как начать выполнять домашние задания, вы можете прочитать в нашей статье

Домашние задания доступны студентам, обучающимся в группе по профессии Java-разработчик.

Загрузите домашнее задание к этому уроку с помощью команды:

hexlet program download java lists

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
1 июня 10 месяцев

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»