Map.putIfAbsent()
Записывает значение, только если ключа ещё нет.
Доступно с: Java 8
Синтаксис
default V putIfAbsent(K key, V value)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| key | K | Ключ. |
| value | V | Значение, которое записывается, только если ключа нет. |
Возвращаемое значение
VТекущее значение ключа или `null`, если пара была добавлена.
Примеры
Существующее значение не перезаписывается:
void main() {
Map<String, String> users = new HashMap<>(Map.of("anna", "admin"));
users.putIfAbsent("anna", "guest");
users.putIfAbsent("oleg", "guest");
IO.println(users.get("anna") + " " + users.get("oleg"));
}Результат:
admin guestПримечания
Значение вычисляется до вызова, даже если не понадобится. Когда создание значения дорогое (новый список, запрос к базе), лучше computeIfAbsent() — он вызывает функцию только при отсутствии ключа.
См. также
- Map.put() — Записывает значение по ключу, заменяя прежнее.
- Map.computeIfAbsent() — Возвращает значение по ключу, создавая его функцией, если ключа нет.
- Map.getOrDefault() — Возвращает значение по ключу или запасное значение, если ключа нет.
Вопросы и ответы по теме
В учебнике
- Словари: Map и HashMap — Словари Map в Java: пары ключ — значение, put и get, getOrDefault, подсчёт с merge, TreeMap и LinkedHashMap.