Обчислення Java HashMap ()

Метод 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 () - обчислює значення, якщо вказаний ключ вже зіставлений зі значенням

Цікаві статті...