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 подскажет развёрнутый ответ в реальном времени.