Какой будет результат выполнения кода?
→
→
→
→
→ Ошибка компиляции
Примечание: по умолчанию при сериализации/десериализации Jackson опирается на спецификацию JavaBeans, то есть учитываются только методы getter и setter.
👉 Java Portal
→
{"name":"Laptop"}→
{"name":"Laptop","price":50000}→
{"price":50000}→
{}→ Ошибка компиляции
Примечание: по умолчанию при сериализации/десериализации Jackson опирается на спецификацию JavaBeans, то есть учитываются только методы getter и setter.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Продвинутый Map в Java (надо знать)
Если ты хоть раз делал
Признайся, все когда-то писали так:
Или вообще вот так:
==> В Apache Commons Collections уже давно есть готовая штука:
Что это такое
Никаких
Что умеет
- Добавление без боли:
- Массовые операции:
- Проверка существования конкретной пары:
- Удаление конкретного значения у ключа:
- Получить вообще все значения:
Реализации
-
-
👉 Java Portal
Если ты хоть раз делал
Map<String, List<String>>, этот пост для тебя.Признайся, все когда-то писали так:
Map<String, List<String>> userTags = new HashMap<>();
userTags.computeIfAbsent("user123", k -> new ArrayList<>()).add("premium");
userTags.computeIfAbsent("user123", k -> new ArrayList<>()).add("verified");
Или вообще вот так:
if (!userTags.containsKey("user123")) {
userTags.put("user123", new ArrayList<>());
}
userTags.get("user123").add("premium");==> В Apache Commons Collections уже давно есть готовая штука:
MultiValuedMap.Что это такое
MultiValuedMap<K, V> это структура данных, которая позволяет хранить несколько значений на один ключ. По сути это Map<K, Collection<V>>, но с нормальным, удобным API.MultiValuedMap<String, String> userTags = new ArrayListValuedHashMap<>();
userTags.put("user123", "premium");
userTags.put("user123", "verified");
userTags.put("user123", "early-adopter");
// Забрать все теги сразу
Collection<String> tags = userTags.get("user123");
// [premium, verified, early-adopter]
Никаких
computeIfAbsent, никаких проверок на null. Просто работает.Что умеет
- Добавление без боли:
multiMap.put("key", "value1");
multiMap.put("key", "value2"); // не затирает предыдущее значение- Массовые операции:
multiMap.putAll("user456", Arrays.asList("admin", "moderator"));- Проверка существования конкретной пары:
multiMap.containsMapping("user123", "premium"); // true/false- Удаление конкретного значения у ключа:
multiMap.removeMapping("user123", "premium");- Получить вообще все значения:
Collection<String> allTags = multiMap.values();
// все значения со всех ключей
Реализации
-
ArrayListValuedHashMap<K, V> — значения хранятся в ArrayList, порядок сохраняется, дубликаты возможны-
HashSetValuedHashMap<K, V> — значения хранятся в HashSet, без дублейPlease open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥5👀5👍2🤔1