Для чего используется класс Collections в Java?

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

Ответ

Класс java.util.Collections — это утилитный класс, содержащий статические методы для операций над коллекциями или возврата специальных коллекций. Он не предназначен для создания экземпляров.

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

  1. Алгоритмы (для List):

    • sort(List<T> list) – сортирует список (естественный порядок или через Comparator).
    • reverse(List<?> list) – меняет порядок элементов на обратный.
    • shuffle(List<?> list) – случайно переставляет элементы.
    • binarySearch(List<? extends Comparable<? super T>> list, T key) – быстрый поиск в отсортированном списке.
  2. Синхронизация (устаревший подход):

    • synchronizedList(List<T> list) – возвращает синхронизированную (потокобезопасную) обертку над коллекцией. Лучше использовать java.util.concurrent.
  3. Неизменяемые коллекции:

    • unmodifiableList(List<? extends T> list) – возвращает представление списка, которое нельзя изменить.

Пример использования:

import java.util.*;

public class CollectionsExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>(Arrays.asList(5, 1, 3, 1, 4));
        System.out.println("Original: " + numbers); // [5, 1, 3, 1, 4]

        Collections.sort(numbers);
        System.out.println("Sorted:   " + numbers); // [1, 1, 3, 4, 5]

        Collections.reverse(numbers);
        System.out.println("Reversed: " + numbers); // [5, 4, 3, 1, 1]

        int index = Collections.binarySearch(numbers, 3);
        // ВАЖНО: binarySearch работает корректно только на отсортированном списке!
        // Для этого списка результат будет непредсказуем, так как он не отсортирован.
        System.out.println("Index of 3 (after reverse): " + index); // Может быть отрицательным
    }
}