English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Метод compute() Java HashMap вычисляет новый значений и связывает его с указанным ключом в хэш-мапе.
Синтаксис метода compute():
hashmap.compute(K key, BiFunction remappingFunction)
Метод compute() имеет два параметра:
ключ - Связанного с вычисленным значением
remappingFunction - Для указанногоКлючФункция вычисления нового значения
Внимание:remappingFunction может принимать два параметра.
Возвращает новое значение, связанное с ключом
Если нет значения, связанного с ключом, то возвращает null
Внимание:Если результат remappingFunction равен null, то будет удалена указаннаяКлючкарта.
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 newPrice = prices.compute("Shoes", (key, value) -> value - value * 10/100); System.out.println("Цена обуви с скидкой: " + newPrice); //Вывод обновленного HashMap System.out.println("Обновленный HashMap: " + prices); } }
Результат вывода
HashMap: {Pant=150, Bag=300, Shoes=200} Цена обуви с скидкой: 180 Обновленный HashMap: {Pant=150, Bag=300, Shoes=180}
В примере выше мы создали хеш-мапу под названием prices. Обратите внимание на выражение
prices.compute("Shoes", (key, value) -> value - value * 10/100)
Здесь,
(key, value) -> value - value * 10/100 - Это lambda выражение. Оно снижает первоначальную цену обуви на 10% и возвращает. Для получения更多信息 о lambda выражениях посетитеJava Lambda выражения.
prices.compute() - Ассоциировать возвращаемое lambda выражением новое значение с mappings Shoes
Внимание:Согласно официальной документации JavaHashMap merge()Методы проще, чем метод compute()
Рекомендуется к прочтению
HashMap computeIfAbsent() - Если указанный ключ не ассоциирован с любым значением, то вычислить это значение
HashMap computeIfPresent() - Если указанный ключ уже ассоциирован с значением, то вычислить это значение