Java 8 compute方法使用

举报
i-WIFI 发表于 2025/01/21 20:42:24 2025/01/21
【摘要】 compute() 方法是 Java 8 中引入的,用于 Map 接口的一个方法,它允许你根据给定的键和当前值来计算一个新的值,并将这个新值重新赋给该键。如果键不存在,则当前值被视为 null。以下是 compute() 方法的一个简单示例:import java.util.HashMap;import java.util.Map;public class ComputeExample { ...

compute() 方法是 Java 8 中引入的,用于 Map 接口的一个方法,它允许你根据给定的键和当前值来计算一个新的值,并将这个新值重新赋给该键。如果键不存在,则当前值被视为 null
以下是 compute() 方法的一个简单示例:

import java.util.HashMap;
import java.util.Map;
public class ComputeExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        
        // 初始化Map
        map.put("A", 1);
        map.put("B", 2);
        map.put("C", 3);
        // 使用compute()方法为键"A"计算新值
        map.compute("A", (key, value) -> (value == null) ? 0 : value * 10);
        // 打印Map内容
        System.out.println(map); // 输出: {A=10, B=2, C=3}
        // 尝试计算不存在的键"D"的新值
        map.compute("D", (key, value) -> (value == null) ? 5 : value * 10);
        // 打印Map内容
        System.out.println(map); // 输出: {A=10, B=2, C=3, D=5}
    }
}

在这个例子中,我们使用 compute() 方法为键 "A" 计算了一个新值,如果键 "A" 存在,则将其值乘以 10。如果键不存在,则将新值设置为 0。然后,我们尝试为不存在的键 "D" 计算一个新值,由于 "D" 不存在,我们将其新值设置为 5。
compute() 方法的签名如下:

default V compute(K key,
                 BiFunction<? super K, ? super V, ? extends V> remappingFunction)
  • K 是键的类型。
  • V 是值的类型。
  • BiFunction 是一个函数式接口,它接受两个参数并返回一个结果。在这个上下文中,第一个参数是键,第二个参数是当前值(如果键不存在则为 null),返回值是新的映射值。
    compute() 方法是 Map 接口中的一个默认方法,因此它可以在任何实现了 Map 接口的类中使用,例如 HashMapTreeMapLinkedHashMap 等。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。