English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Опытные заметки

Онлайн инструменты

Java управление потоком

Java массив

Java ориентированное на объекты (I)

Обработка исключений Java

Java ориентированное на объекты (II)

Java ориентированное на объекты (III)

Java список (List)

Java Queue (очередь)

Java Map集合

Java Set集合

Java ввод/вывод (I/O)

Java Reader/Writer

Java методы HashMap

Java другие темы

Метод computeIfAbsent() Java HashMap пример использования и пример

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

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

hashmap.computeIfAbsent(K key, Function remappingFunction)

  • computeIfAbsent() параметры computeIfAbsent() метод имеет два параметра:

  • key - связанный с вычисленным значением ключключremappingFunction

функция для вычисления нового значения для указанного ключа- для указанного

функция вычисления нового значения

  • значение computeIfAbsent()

  • возвращает новый или старый значение, связанное с указанным ключом

функция для вычисления нового значения для указанного ключаВниманиеключассоциации.

Пример 1: computeIfAbsent() Java HashMap

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);
    //расчет стоимости рубашки
    int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280);
    System.out.println("Цена рубашки: " + shirtPrice);
    //печать обновленного HashMap
    System.out.println("Обновленный HashMap: " + prices);
  }
}

Результат вывода

HashMap: {Pant=150, Bag=300, Shoes=200}
Цена рубашки: 280
обновленный HashMap: {Pant=150, Shirt=280, Bag=300, Shoes=200}

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

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

здесь,

  • key -> 280 - является lambda-выражением. Оно возвращает значение 280. Для получения дополнительной информации о lambda-выражениях посетитеJava Lambda выражения.

  • prices.computeIfAbsent() - связать возвращаемое новым значением lambda-выражения с маппингом Shirt. Это возможно, потому что Shirt еще не маппинг к любому значению в hashmap.

Пример 2: если ключ уже существует, то использовать computeIfAbsent()

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("Цена обуви: " + shoePrice);
    //печать обновленного HashMap
    System.out.println("Обновленный 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()

Java методы HashMap