Middle
Каква е разликата между методите put и compute?
sobes.tech AI
Отговор от AI
put(key, value) просто асоциира value с key, заменяйки съществуващата стойност, ако ключът вече съществува.
compute(key, remappingFunction) изчислява нова стойност за key, използвайки предоставената функция remappingFunction. Функцията приема текущия ключ и неговата текуща стойност (или null, ако ключът не съществува) и връща нова стойност, която ще бъде свързана с ключа. Ако функцията върне null, записът се премахва.
Основни разлики:
- Обработка на липсващи ключове:
putвмъква нова стойност.computeможе да използва предишната стойност (дориnull) за изчисление. - Зависимост от предишната стойност:
putзадава стойността независимо от предишната.computeявно използва предишната стойност във функцията за изчисление. - Премахване на записи:
put(key, null)премахва записа.computeпремахва записа, ако функцията за изчисление върнеnull.
Пример за използване:
// Използване на put
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // Заменя 1 с 2
// Използване на compute за инкрементиране на брояч
Map<String, Integer> countsCompute = new HashMap<>();
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana ще бъде 1
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana ще бъде 2
countsCompute.compute("cherry", (key, value) -> null); // Премахва cherry, ако съществува