Метод Java HashMap compute () обчислює нове значення та пов'язує його із зазначеним ключем у хеш-капі.
Синтаксис compute()
методу:
hashmap.compute(K key, BiFunction remappingFunction)
Тут hashmap є об'єктом HashMap
класу.
compute () Параметри
compute()
Метод приймає 2 параметра:
- ключ - ключ, з яким має бути пов'язане обчислене значення
- remappingFunction - функція, яка обчислює нове значення для вказаного ключа
Примітка : Функція remappingFunction може приймати два аргументи. Отже, розглядається як BiFunction
.
compute () Повернене значення
- повертає нове значення, пов'язане з ключем
- повертає,
null
якщо значення, пов'язане з ключем, відсутнє
Примітка : Якщо результати remappingFunction результати null
, то відображення для вказаного ключа буде видалено.
Приклад: HashMap обчислює (), щоб вставити нове значення
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: (штани = 150, сумка = 300, взуття = 200) Ціна зі знижкою на взуття: 180 Оновлена HashMap: (штани = 150, сумка = 300, взуття = 180
У наведеному вище прикладі ми створили хеш-карту з цінами. Зверніть увагу на вираз,
prices.compute("Shoes", (key, value) -> value - value * 10/100)
Ось,
- (ключ, значення) -> значення - значення * 10/100 - це лямбда-вираз. Це зменшує старе значення Взуття на 10% і повертає його. Щоб дізнатись більше про лямбда-вираз, відвідайте Java Lambda Expressions.
- prices.compute () - пов'язує нове значення, повернене лямбда-виразом, до відображення для взуття.
Ми використовували лямбда-вираз як функцію перепризначення, яка визначає два параметри.
Примітка : Згідно з офіційною документацією Java, метод HashMap merge () простіший, ніж compute()
метод.
Рекомендована література
- HashMap computeIfAbsent () - обчислює значення, якщо вказаний ключ не зіставлений з будь-яким значенням
- HashMap computeIfPresent () - обчислює значення, якщо вказаний ключ вже зіставлений зі значенням