Java Geek
2.5K subscribers
282 photos
1 file
31 links
Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах.

По всем вопросам @evgenycarter
Download Telegram
☕️ Java Tips: Инициализация карты в одну строку с 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
👍41🤡1