[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-8-kakie-dopolnitelnye-metody-dlya-raboty-s-assotsiativnymi-massivami-poyavilis-v-java-8":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},382,"kakie-dopolnitelnye-metody-dlya-raboty-s-assotsiativnymi-massivami-poyavilis-v-java-8",10,"java-8","Java 8+","☕","Какие дополнительные методы для работы с ассоциативными массивами появились в Java 8?","\u003C!-- grade: junior\u002Fmiddle -->\n\nJava 8 добавила в интерфейс `Map` набор `default`-методов, которые значительно упрощают типичные операции «проверь — вставь — обнови».\n\n| Метод | Описание | Пример |\n|-------|----------|--------|\n| `putIfAbsent(key, value)` | Добавляет значение только если ключ отсутствует | `map.putIfAbsent(\"a\", \"Aa\")` |\n| `getOrDefault(key, default)` | Возвращает значение или дефолт | `map.getOrDefault(\"a\", \"not found\")` |\n| `forEach(biConsumer)` | Итерация по парам ключ-значение | `map.forEach((k, v) -> print(v))` |\n| `compute(key, biFunction)` | Вычисляет новое значение (может создать или обновить) | `map.compute(\"a\", (k, v) -> k + v)` |\n| `computeIfPresent(key, biFunction)` | Обновляет значение, если ключ существует | `map.computeIfPresent(\"a\", (k, v) -> k + v)` |\n| `computeIfAbsent(key, function)` | Создаёт значение, если ключ отсутствует | `map.computeIfAbsent(\"a\", k -> \"A\" + k)` |\n| `merge(key, value, biFunction)` | Объединяет старое и новое значение или вставляет, если ключа нет | `map.merge(\"a\", \"z\", String::concat)` |\n| `replaceAll(biFunction)` | Заменяет все значения результатом функции | `map.replaceAll((k, v) -> v.toUpperCase())` |\n| `replace(key, value)` | Заменяет значение, если ключ существует | `map.replace(\"a\", \"new\")` |\n\n### Типичные паттерны\n\n```java\n\u002F\u002F Подсчёт частот (до Java 8)\nif (map.containsKey(word)) {\n    map.put(word, map.get(word) + 1);\n} else {\n    map.put(word, 1);\n}\n\n\u002F\u002F Подсчёт частот (Java 8)\nmap.merge(word, 1, Integer::sum);\n```\n\n> **На собеседовании:** наиболее полезные для запоминания — `putIfAbsent`, `getOrDefault`, `computeIfAbsent`, `merge`. Покажите паттерн `merge` для подсчёта частот — это классический пример, демонстрирующий мощь новых методов.","","junior",[15],"java8",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":20,"featuredSnippetReady":23},"Какие дополнительные методы для работы с ассоциативными масс — Gymterview","Java 8 добавила в интерфейс `Map` набор `default`-методов, которые значительно упрощают типичные операции «проверь — вставь — обнови».","Java 8 добавила в интерфейс `Map` набор `default`-методов, которые значительно упрощают типичные операции «проверь — вст",[15,13],true]