Java HashMap computeIfAbsent ()

Метод Java HashMap computeIfAbsent () обчислює нове значення та пов'язує його із зазначеним ключем, якщо ключ не пов'язаний з яким-небудь значенням у хеш-капі.

Синтаксис computeIfAbsent()методу:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Тут hashmap є об'єктом HashMapкласу.

Параметри computeIfAbsent ()

computeIfAbsent()Метод приймає 2 параметра:

  • ключ - ключ, з яким має бути пов'язане обчислене значення
  • remappingFunction - функція, яка обчислює нове значення для вказаного ключа

Примітка : Функція перепризначення не може приймати два аргументи.

computeIfAbsent () Повернене значення

  • повертає нове або старе значення, пов'язане із зазначеним ключем
  • повертає, nullякщо значення, пов'язане з ключем, відсутнє

Примітка : Якщо результати remappingFunction результати null, то відображення для вказаного ключа буде видалено.

Приклад 1: Java HashMap computeIfAbsent ()

 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); // compute the value of Shirt int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280); System.out.println("Price of Shirt: " + shirtPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Вихідні дані

 HashMap: (Штани = 150, Сумка = 300, Взуття = 200) Ціна сорочки: 280 Оновлена ​​HashMap: (Штани = 150, Сорочка = 280, Сумка = 300, Взуття = 200)

У наведеному вище прикладі ми створили хеш-карту з цінами. Зверніть увагу на вираз,

 prices.computeIfAbsent("Shirt", key -> 280)

Ось,

  • ключ -> 280 - це лямбда-вираз. Він повертає значення 280. Щоб дізнатись більше про лямбда-вираз, відвідайте Java Lambda Expressions.
  • prices.computeIfAbsent () пов'язує нове значення, повернене лямбда-виразом, до відображення для сорочки. Це можливо лише тому, що сорочка вже не зіставлена ​​з будь-яким значенням у хеш-карті.

Приклад 2: computeIfAbsent (), якщо ключ уже присутній

 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", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // mapping for Shoes is already present // new value for Shoes is not computed int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Price of Shoes: " + shoePrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Вихідні дані

 HashMap: (Штани = 150, Сумка = 300, Взуття = 180) Ціна взуття: 180 Оновлена ​​HashMap: (Pant = 150, Сумка = 300, Взуття = 180)

У наведеному вище прикладі відображення для взуття вже присутнє в хеш-карті. Отже, computeIfAbsent()метод не обчислює нове значення для взуття.

Рекомендована література

  • HashMap compute () - обчислює значення для вказаного ключа
  • HashMap computeIfPresent () - обчислює значення, якщо вказаний ключ вже зіставлений зі значенням
  • Java HashMap merge () - виконує те саме завдання, що і compute()

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