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