HashMap computeIfAbsent()
时间: 2023-12-05 16:37:36 浏览: 121
HashMap中的computeIfAbsent()方法可以用于计算给定键的值,如果该键不存在,则将其添加到Map中。这个方法的语法为:V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)。其中,mappingFunction是一个将key映射到value的函数。如果key已经存在,则不会进行重新计算,而是直接返回原来的值。这个方法广泛应用于缓存和延迟初始化等场景。可以通过这个方法来避免使用传统的if-else语句进行判断和赋值的繁琐过程。举个例子,如果HashMap中不存在对应的key,我们可以使用computeIfAbsent()方法来计算一个新的value并将其添加到Map中,示例代码如下:
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("a", 10);
hashMap.put("b", 20);
System.out.println("computeIfAbsent 方法之前:" + hashMap);
Integer computeIfAbsent = hashMap.computeIfAbsent("c", key -> 30);
System.out.println("computeIfAbsent:" + computeIfAbsent);
System.out.println("computeIfAbsent 方法之后:" + hashMap);
输出结果为:
computeIfAbsent 方法之前:{a=10, b=20}
computeIfAbsent:30
computeIfAbsent 方法之后:{a=10, b=20, c=30}
如果HashMap中已经存在对应的key,则不会进行重新计算,而是直接返回原来的值,示例代码如下:
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("a", 10);
hashMap.put("b", 20);
System.out.println("computeIfAbsent 方法之前:" + hashMap);
Integer computeIfAbsent = hashMap.computeIfAbsent("a", key -> 30);
System.out.println("computeIfAbsent:" + computeIfAbsent);
System.out.println("computeIfAbsent 方法之后:" + hashMap);
输出结果为:
computeIfAbsent 方法之前:{a=10, b=20}
computeIfAbsent:10
computeIfAbsent 方法之后:{a=10, b=20}
--相关问题--:
阅读全文