Easyimmutable-factoriesjava9

Что такое List.of / Map.of (immutable factories)?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

List.of/Set.of/Map.of (Java 9) — фабрики immutable коллекций. Бросают UnsupportedOperationException на add/remove/set.

List<Integer> list = List.of(1, 2, 3);
Set<Integer> set = Set.of(1, 2, 3);          // дубликат → IllegalArgumentException
Map<String, Integer> m = Map.of("a", 1, "b", 2);
Map<String, Integer> big = Map.ofEntries(
    Map.entry("a", 1), Map.entry("b", 2)     // для больших map
);

// Java 10 — immutable copy из существующей коллекции
List<String> copy = List.copyOf(existingList);

// Java 16 — immutable list из stream
List<Integer> result = stream.filter(x -> x > 0).toList();
  • Не разрешают null элементы/ключи/значения;
  • Внутри — компактные специализированные реализации (memory efficient), сериализуемые;
  • Применение: константные коллекции, тестовые данные;
  • До Java 9 — Arrays.asList (mutable, fixed size), Collections.unmodifiableList.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.