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

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

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

Java Массив

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

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

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

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

Java Список (List)

Java Queue (очередь)

Сборник Java Map

Сборник Java Set

Входной/выходной поток Java (I/O)

Reader/Writer Java

Другие темы Java

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

Java методы HashMap

Если в хэш-ключе уже существует соответствующий ключ, то метод computeIfPresent() класса Java HashMap будет вычислять новый значений и ассоциировать его с указанным ключом.

Грамматика метода computeIfPresent():

computeIfPresent(K key, BiFunction remappingFunction) hashmap.computeIfPresent()

параметр computeIfPresent()

Метод computeIfPresent() имеет два параметра:

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

  • remappingFunction - Для указанногоКлючФункция вычисления нового значения

Внимание: remappingFunction может принимать два параметра.

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

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

  • Если нет значения, связанного с ключом, то возвращается null

Внимание: Если результат remappingFunction равен null, то удаляется указанныйКлючассоциативной карты.

Пример 1: computeIfPresent() 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);
    // Перерасчет стоимости обуви с НДС 10%
    int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100);
    System.out.println("Цена обуви с НДС: " + shoesPrice);
    // Вывод обновленного HashMap
    System.out.println("Обновленный HashMap: " + prices);
  }
}

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

HashMap: {Pant=150, Bag=300, Shoes=200}
Цена обуви с НДС: 220
Обновленный HashMap: {Pant=150, Bag=300, Shoes=220}

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

prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Здесь,}}

  • (key, value) -> value + value*10/100  - Это lambda-выражение. Оно вычисляет новое значение Shoes и возвращает. Для получения дополнительной информации о lambda-выражениях посетитеJava Lambda выражения.

  • prices.computeIfPresent()  - Связывает новый возвращаемый значением lambda-выражения с mappings Shoes. Это возможно только потому, что Shoes уже связан с значением в хэш-мапе.

Невозможно использовать метод computeIfPresent(), если ключ не существует в хэш-таблице.

Рекомендуется к прочтению

  • HashMap compute()  - Вычисляет значение для указанного ключа

  • HashMap computeIfAbsent()  - Вычисляет значение, если указанный ключ не связан с любым значением

  • Java HashMap merge()  - Выполняет ту же задачу, что и compute()

Java методы HashMap