← Назад к вопросам

Классом или интерфейсом является Collections

2.2 Middle🔥 181 комментариев
#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Collections — утилитный класс Java Collections Framework

Collections — это финальный утилитный класс (не интерфейс), расположенный в пакете java.util. Он содержит статические методы для работы с коллекциями.

Определение и назначение

public final class Collections {
    // Только статические методы, нет конструктора
    private Collections() {
        // Приватный конструктор — класс не может быть инстанцирован
    }
    
    // Статические методы для работы с коллекциями
    public static <T> List<T> unmodifiableList(List<? extends T> list) { ... }
    public static <T> void sort(List<T> list) { ... }
    public static <T> int binarySearch(List<? extends T> list, T key) { ... }
    // ... и много других
}

Collections — это паттерн Утилитный класс (Utility Class), содержащий вспомогательные методы для работы с коллекциями.

Основные методы Collections

1. Сортировка

List<Integer> numbers = new ArrayList<>(Arrays.asList(5, 2, 8, 1, 9));

// Естественная сортировка
Collections.sort(numbers);  // [1, 2, 5, 8, 9]

// Обратная сортировка
Collections.sort(numbers, Collections.reverseOrder());
// [9, 8, 5, 2, 1]

// Кастомный компаратор
Collections.sort(numbers, (a, b) -> b.compareTo(a));  // [9, 8, 5, 2, 1]

2. Поиск

List<Integer> sorted = Arrays.asList(1, 2, 5, 8, 9);

// Бинарный поиск (для отсортированного списка)
int index = Collections.binarySearch(sorted, 5);  // 2

// Поиск минимума и максимума
int min = Collections.min(numbers);  // 1
int max = Collections.max(numbers);  // 9

3. Неизменяемые коллекции (Immutable)

List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));

// Создаёт unmodifiable view
List<String> unmodifiable = Collections.unmodifiableList(list);
unmodifiable.add("D");  // UnsupportedOperationException!

// Пустые коллекции
List<String> emptyList = Collections.emptyList();
Set<String> emptySet = Collections.emptySet();
Map<String, Integer> emptyMap = Collections.emptyMap();

4. Синхронизированные коллекции

List<String> unsafeList = new ArrayList<>();

// Оборачивает в synchronized wrapper
List<String> syncList = Collections.synchronizedList(unsafeList);

// Теперь потокобезопасно
syncList.add("элемент");  // Синхронизировано

// Аналогично для других типов
Map<String, Integer> syncMap = Collections.synchronizedMap(new HashMap<>());

5. Перестановки и наполнение

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

// Случайная перестановка (shuffle)
Collections.shuffle(list);  // [4, 1, 5, 2, 3]

// Циклическая ротация
Collections.rotate(list, 2);  // [2, 3, 4, 1, 5]

// Заполнение одинаковыми значениями
Collections.fill(list, 0);  // [0, 0, 0, 0, 0]

// Нахождение вхождений
int freq = Collections.frequency(list, 0);  // 5

Различие между Collections и Collection

Не путай Collections с Collection:

// Collection — интерфейс (иерархия)
public interface Collection<E> extends Iterable<E> { ... }

// Collections — утилитный класс со статическими методами
public final class Collections { ... }

Отличие от Collections.sort() и Arrays.sort()

List<Integer> list = Arrays.asList(5, 2, 8);
int[] array = {5, 2, 8};

// Collections.sort() — для Lists
Collections.sort(list);  // ✓

// Arrays.sort() — для массивов
Arrays.sort(array);  // ✓

Ключевые особенности

  • Финальный класс — не может быть наследован
  • Приватный конструктор — не может быть инстанцирован
  • Только статические методы — вызываются через имя класса
  • Потокоопасность — synchronized методы создают thread-safe обёртки
  • Неизменяемость — методы unmodifiable создают read-only views

Collections — это фундаментальная часть Java Collections Framework, предоставляющая удобные утилиты для работы с коллекциями.

Классом или интерфейсом является Collections | PrepBro