База знаний Бинариум

Коллекции в Java: List, Set и Map простыми словами

Коллекции в Java

Массив в Java имеет фиксированный размер — неудобно, если вы не знаете заранее, сколько будет товаров в корзине. Для таких задач есть коллекции. Разбираем три главных интерфейса и когда какой выбирать.

Б

Редакция Бинариума

Пишем о профессиях в дизайне, BIM и IT · 7 минут чтения

List — список с порядком

List — упорядоченный список, где элементы могут повторяться. Как очередь в кофейне: важен порядок, и два человека могут заказать одно и то же.

List<String> cart = new ArrayList<>();
cart.add("Хлеб");
cart.add("Молоко");
cart.add("Хлеб");
System.out.println(cart.get(0)); // Хлеб

Set — множество без повторов

Set хранит только уникальные элементы. Например, список городов, из которых были заказы: каждый город — один раз.

Set<String> cities = new HashSet<>();
cities.add("Казань");
cities.add("Казань");
System.out.println(cities.size()); // 1

Map — словарь «ключ — значение»

Map хранит пары: по ключу можно быстро найти значение. Как телефонная книга: имя — номер.

Map<String, Integer> stock = new HashMap<>();
stock.put("Кофе", 12);
stock.put("Чай", 5);
System.out.println(stock.get("Кофе")); // 12

Курс Бинариума

Java-разработчик с нуля — коллекции на реальных задачах

Подробнее

Как выбрать коллекцию

ЗадачаКоллекция
Список с порядком и повторамиArrayList
Уникальные элементы, порядок не важенHashSet
Уникальные элементы в отсортированном видеTreeSet
Поиск значения по ключуHashMap
Ключи в отсортированном порядкеTreeMap
Порядок добавления важенLinkedHashSet, LinkedHashMap

Частые ошибки

  • Изменение коллекции в цикле for-each — приводит к исключению. Используйте итератор или removeIf.
  • get из Map без проверки — если ключа нет, вернётся null.
  • Свои объекты в HashSet без equals и hashCode — одинаковые объекты будут считаться разными.
  • Объявление через реализацию — лучше писать List<String> list = new ArrayList<>(), а не ArrayList<String>.

Главное

  • List — порядок и повторы, Set — уникальность, Map — ключ и значение.
  • В большинстве задач хватает ArrayList, HashSet и HashMap.
  • Для своих объектов в Set и Map нужны equals и hashCode.
  • Не изменяйте коллекцию во время перебора for-each.

Частые вопросы

Чем ArrayList отличается от LinkedList?

ArrayList быстрее получает элемент по индексу, LinkedList — быстрее вставляет в начало и середину. На практике чаще используют ArrayList.

Можно ли хранить в коллекции int?

Напрямую нет, но Java автоматически упакует int в Integer.

Курс Бинариума

Java-разработчик с нуля

Коллекции, ООП, исключения и тесты — на практических задачах.

  • 11 недель обучения
  • 10+ практических работ
  • Проект на GitHub
10.11.2026
Читайте также