Java HashMap: метод computeIfAbsent()

Java HashMap Java HashMap

Метод computeIfAbsent() пересчитывает значение для указанного ключа в hashMap; если ключ не существует, он добавляется в hashMap.

Синтаксис computeIfAbsent():

hashmap.computeIfAbsent(K key, Function remappingFunction)

Примечание:hashmap — это объект класса HashMap.

Детали параметров:

  • key - ключ
  • remappingFunction - функция ремаппинга, используемая для пересчёта значения

Возвращаемое значение

Если значение, соответствующее ключу, не существует, получается значение, пересчитанное remappingFunction, и сохраняется как значение для этого ключа; в противном случае возвращается значение.

Пример

В следующем примере демонстрируется использование метода computeIfAbsent():

Пример

import java.util.HashMap;

class Main {
    public static void main(String[] args) {
        // Создать HashMap
        HashMap<String, Integer> prices = new HashMap<>();

        // Добавить записи сопоставления в HashMap
        prices.put("Shoes", 200);
        prices.put("Bag", 300);
        prices.put("Pant", 150);
        System.out.println("HashMap: " + prices);

        // Вычислить значение для Shirt
        int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280);
        System.out.println("Price of Shirt: " + shirtPrice);

        // Вывести обновлённый HashMap
        System.out.println("Обновлённый HashMap: " + prices);
    }
}

Вывод вышеприведённой программы:

HashMap: {Pant=150, Bag=300, Shoes=200}
Price of Shirt: 280
Updated HashMap: {Pant=150, Shirt=280, Bag=300, Shoes=200}

В приведённом выше примере мы создали HashMap с именем prices.

Обратите внимание на выражение:

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

В коде мы использовали анонимную функцию, лямбда-выражение.key-> 280В качестве remapping-функции prices.computeIfAbsent() связывает новое значение, возвращаемое лямбда-выражением, с Shirt.

Поскольку Shirt не существует в HashMap, добавляется новая пара ключ/значение.

Чтобы узнать больше о лямбда-выражениях, посетитеЛямбда-выражения Java。

Случай, когда ключ уже существует:

Пример

import java.util.HashMap;

class Main {
    public static void main(String[] args) {
        // Создать HashMap
        HashMap<String, Integer> prices = new HashMap<>();

        // Добавить сопоставления в HashMap
        prices.put("Shoes", 180);
        prices.put("Bag", 300);
        prices.put("Pant", 150);
        System.out.println("HashMap: " + prices);

        // Сопоставление для Shoes уже существует
        // Новое значение для Shoes не вычисляется
        int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280);
        System.out.println("Price of Shoes: " + shoePrice);

        // Вывести обновлённый HashMap
        System.out.println("Обновлённый HashMap: " + prices);
    }
}

Вывод вышеприведённой программы:

HashMap: {Pant=150, Bag=300, Shoes=180}
Price of Shoes: 180
Updated HashMap: {Pant=150, Bag=300, Shoes=180}

В приведённом выше примере сопоставление для Shoes уже существует в HashMap, поэтому новое значение для Shoes не вычисляется.

Java HashMap Java HashMap

Другие расширения