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)

Java Reader/Writer

Java 다른 주제

Java HashMap computeIfPresent() 사용 방법 및 예제

Java HashMap 메서드

해시 키에 해당 키가 이미 존재하면 Java HashMap computeIfPresent() 메서드는 새 값을 계산하고 해당 키와 연결합니다.

computeIfPresent()方法的语法为:

hashmap.computeIfPresent(K key, BiFunction remappingFunction)

computeIfPresent()参数

computeIfPresent()方法有两个参数:

  • key - 与计算值关联的键

  • remappingFunction - 为指定计算新值的函数

注意:remappingFunction可以接受两个参数。

computeIfPresent()返回值

  • 返回与指定键关联的新值

  • 如果没有与键关联的值,则返回null

注意:如果remappingFunction结果为null,则将删除指定的映射。

示例1:Java HashMap的computeIfPresent()

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  - 이는 람다 표현식입니다. Shoes의 새로운 값을 계산하고 반환합니다. 람다 표현식에 대한更多信息을 얻으려면 다음을 방문하십시오:Java Lambda 표현식.

  • prices.computeIfPresent()  - Lambda 표현식을 반환하는 새로운 값을 Shoes 매핑과 연결합니다. 이는 Shoes가 해시 맵의 값에 이미 매핑되었기 때문에 유일한 가능성입니다.

computeIfPresent() 메서드를 사용할 수 없는 경우, 해시 테이블에 해당 키가 없다면.

추천读物

Java HashMap 메서드