Метод compute
Метод compute вычисляет новое значение
для указанного ключа и сохраняет его в HashMap.
В первый параметр мы передаем ключ, для которого
нужно вычислить значение. Второй параметр - это
функция remappingFunction, которая принимает текущее
значение (или null, если ключ отсутствует)
и возвращает новое значение. Если функция возвращает
null, то запись удаляется из HashMap.
Метод возвращает новое значение, связанное с ключом,
или null, если значение отсутствует.
Синтаксис
map.compute(key, remappingFunction)
Пример
Давайте вычислим новое значение для ключа
"a", увеличив текущее значение на 10:
import java.util.HashMap;
public class Main
{
public static void main(String[] args)
{
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 5);
map.put("b", 10);
Integer res = map.compute("a", (key, value) -> value + 10);
System.out.println(res);
System.out.println(map);
}
}
Результат выполнения кода:
15
{a=15, b=10}
Пример
Давайте вычислим значение для ключа, которого
нет в HashMap. В этом случае текущее значение
будет null:
import java.util.HashMap;
public class Main
{
public static void main(String[] args)
{
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 5);
map.put("b", 10);
Integer res = map.compute("c", (key, value) -> value == null ? 1 : value + 1);
System.out.println(res);
System.out.println(map);
}
}
Результат выполнения кода:
1
{a=5, b=10, c=1}
Пример
Если функция возвращает null, то запись
удаляется из HashMap:
import java.util.HashMap;
public class Main
{
public static void main(String[] args)
{
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 5);
map.put("b", 10);
Integer res = map.compute("a", (key, value) -> null);
System.out.println(res);
System.out.println(map);
}
}
Результат выполнения кода:
null
{b=10}
Смотрите также
-
метод
computeIfAbsent,
который вычисляет значение, если ключ отсутствует -
метод
computeIfPresent,
который вычисляет значение, если ключ присутствует -
метод
put,
который добавляет пару ключ-значение -
метод
merge,
который объединяет значение с существующим