☕️ Java Tips: Инициализация карты в одну строку с
Помните, как раньше приходилось создавать Map с заранее известными значениями? Куча вызовов
Разберем, как это работает и, главное, чего нельзя делать.
🆚 До и После
Как было раньше (The Old Way):
Как сейчас (The Modern Way):
⚠️ Важные нюансы (Gotchas)
Использование
1. Нельзя менять данные
Попытка добавить или удалить элемент приведет к ошибке.
2. Никаких
В отличие от
3. Лимит в 10 пар
Метод
🚀 Когда использовать?
Идеально подходит для конфигураций, статических словарей, тестовых данных и справочников, которые не меняются во время работы программы.
#Java #CodeTips #Programming #Java9
👉 @java_geek
Map.of()Помните, как раньше приходилось создавать Map с заранее известными значениями? Куча вызовов
.put(), статические блоки или (не дай бог) двойные фигурные скобки. Начиная с Java 9, у нас есть красивый и лаконичный способ - Map.of().Разберем, как это работает и, главное, чего нельзя делать.
🆚 До и После
Как было раньше (The Old Way):
Map<String, Integer> map = new HashMap<>();
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
// Результат: много строк кода ради простых данных
Как сейчас (The Modern Way):
Map<String, Integer> map = Map.of(
"One", 1,
"Two", 2,
"Three", 3
);
// Результат: чисто, читаемо, одна инструкция
⚠️ Важные нюансы (Gotchas)
Использование
Map.of() - это не просто синтаксический сахар для HashMap. Это создание неизменяемой (Immutable) структуры.1. Нельзя менять данные
Попытка добавить или удалить элемент приведет к ошибке.
var colors = Map.of("Red", "#FF0000");
colors.put("Blue", "#0000FF");
// ❌ Ошибка: UnsupportedOperationException
2. Никаких
nullВ отличие от
HashMap, здесь нельзя использовать null ни в ключах, ни в значениях.
Map.of("Key", null);
// ❌ Ошибка: NullPointerException
3. Лимит в 10 пар
Метод
Map.of() перегружен для приема до 10 пар ключ-значение. Если нужно больше, используйте Map.ofEntries():
Map.ofEntries(
Map.entry("k1", "v1"),
Map.entry("k2", "v2"),
// ... хоть 100 пар
Map.entry("k100", "v100")
);
🚀 Когда использовать?
Идеально подходит для конфигураций, статических словарей, тестовых данных и справочников, которые не меняются во время работы программы.
#Java #CodeTips #Programming #Java9
👉 @java_geek
👍4❤1🤡1