Collections в Java — это класс или интерфейс?

«Collections в Java — это класс или интерфейс?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

java.util.Collections — это утилитный класс (utility class), а не интерфейс.

Характеристики класса Collections:

  • Содержит исключительно статические методы для операций с коллекциями (List, Set, Map).
  • Имеет приватный конструктор, поэтому создать его экземпляр невозможно.
  • Предоставляет алгоритмы и фабричные методы.

Основные категории методов:

  1. Алгоритмы:
    List<Integer> numbers = Arrays.asList(3, 1, 4);
    Collections.sort(numbers);        // Сортировка: [1, 3, 4]
    Collections.reverse(numbers);     // Реверс: [4, 3, 1]
    int index = Collections.binarySearch(numbers, 3); // Бинарный поиск
  2. Синхронизирующие обёртки (legacy, для потокобезопасности):
    List<String> syncList = Collections.synchronizedList(new ArrayList<>());
    Set<String> syncSet = Collections.synchronizedSet(new HashSet<>());
  3. Неизменяемые (immutable) коллекции (с Java 9 чаще используют List.of(), Set.of()):
    List<String> unmodifiableList = Collections.unmodifiableList(someList);
  4. Вспомогательные методы: shuffle(), frequency(), disjoint() и др.

Не путать с Collection (интерфейс) и Collections (утилитный класс).