Метод compute () Java HashMap вычисляет новое значение и связывает его с указанным ключом в хэш-карте.
Синтаксис compute()
метода:
hashmap.compute(K key, BiFunction remappingFunction)
Здесь hashmap - это объект HashMap
класса.
compute () Параметры
compute()
Метод принимает 2 параметра:
- key - ключ, с которым должно быть связано вычисленное значение
- remappingFunction - функция, которая вычисляет новое значение для указанного ключа
Примечание . Функция remappingFunction может принимать два аргумента. Следовательно, считается как BiFunction
.
compute () Возвращаемое значение
- возвращает новое значение, связанное с ключом
- возвращается,
null
если с ключом не связано значение
Примечание . Если результат remappingFunction null
, то отображение для указанного ключа удаляется.
Пример: HashMap compute () для вставки нового значения
import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices = new HashMap(); // insert entries to the HashMap prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // recompute the value of Shoes with 10% discount int newPrice = prices.compute("Shoes", (key, value) -> value - value * 10/100); System.out.println("Discounted Price of Shoes: " + newPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )
Вывод
HashMap: (Pant = 150, Bag = 300, Shoes = 200) Цена со скидкой на обувь: 180 Обновленная HashMap: (Pant = 150, Bag = 300, Shoes = 180
В приведенном выше примере мы создали хэш-карту с именем price. Обратите внимание на выражение,
prices.compute("Shoes", (key, value) -> value - value * 10/100)
Вот,
- (ключ, значение) -> значение - значение * 10/100 - это лямбда-выражение. Уменьшает старую стоимость обуви на 10% и возвращает ее. Чтобы узнать больше о лямбда-выражении, посетите Java Lambda Expressions.
- price.compute () - связывает новое значение, возвращаемое лямбда-выражением, с сопоставлением для Shoes.
Мы использовали лямбда-выражение как функцию переназначения, которая обрабатывает два параметра.
Примечание . Согласно официальной документации Java, метод HashMap merge () проще, чем compute()
метод.
Рекомендуемая литература
- HashMap computeIfAbsent () - вычисляет значение, если указанный ключ не сопоставлен ни с каким значением
- HashMap computeIfPresent () - вычисляет значение, если указанный ключ уже сопоставлен со значением