Встречается на 2% собеседований по Java
В чем разница между методами put() и compute() в ConcurrentHashMap
put() просто добавляет или заменяет значение по ключу, а compute() позволяет атомарно модифицировать значение на основе текущего состояния.
Пример:
java
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
// put - простое добавление/замена
map.put("key", 1);
// compute - атомарное изменение на основе текущего значения
map.compute("key", (k, v) -> v == null ? 1 : v + 1);
text
**Ключевые отличия:**
1. `put()` заменяет значение, `compute()` позволяет выполнить операцию над существующим значением.
2. `compute()` гарантирует атомарность при изменении (нет race condition между get и put).
3. `compute()` принимает `BiFunction`, которая может вернуть `null` для удаления записи.
Лучше использовать `compute()` для сложных атомарных операций.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы