Java HashMap computeIfAbsent ()

Метод computeIfAbsent () Java HashMap вычисляет новое значение и связывает его с указанным ключом, если ключ не связан ни с каким значением в хэш-карте.

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

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Здесь hashmap - это объект HashMapкласса.

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

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

  • key - ключ, с которым должно быть связано вычисленное значение
  • 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)

В приведенном выше примере мы создали хэш-карту с именем price. Обратите внимание на выражение,

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

Вот,

  • key -> 280 - лямбда-выражение. Он возвращает значение 280. Чтобы узнать больше о лямбда-выражении, посетите Java Lambda Expressions.
  • price.computeIfAbsent () связывает новое значение, возвращаемое лямбда-выражением, с отображением для Shirt. Это возможно только потому, что рубашка уже не сопоставлена ​​ни с одним значением в хэш-карте.

Пример 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: (Pant = 150, Bag = 300, Shoes = 180) Цена обуви: 180 Обновленная HashMap: (Pant = 150, Bag = 300, Shoes = 180)

В приведенном выше примере отображение для Shoes уже присутствует в хэш-карте. Следовательно, computeIfAbsent()метод не вычисляет новое значение для Shoes.

Рекомендуемая литература

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

Интересные статьи...