📅  最后修改于: 2023-12-03 15:15:56.135000             🧑  作者: Mango
Java中的HashMap是一种非常有用的数据结构,它允许您存储键和值的映射关系。而且,在Java 8中,HashMap中包含了一个非常有用的新方法 computeIfAbsent()
。
computeIfAbsent()
方法的定义如下:
default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
computeIfAbsent()
方法的作用是:如果指定的键尚未与某个值相关联,则使用给定的映射函数计算其值,并将其输入到Map中。换句话说,该方法将返回与指定键相关联的值,如果该键尚未与任何值相关联,则该值将是映射函数的结果。
下面的示例演示了 computeIfAbsent()
方法如何使用:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
Integer newValue = map.computeIfAbsent("banana", k -> k.length());
Integer existingValue = map.computeIfAbsent("apple", k -> k.length());
System.out.println(newValue); // 输出 6
System.out.println(existingValue); // 输出 1
这段代码创建了一个HashMap,并向其添加键值对 "apple" / 1。然后我们调用了 computeIfAbsent()
方法两次。第一次调用使用字符串 "banana" 调用方法,该字符串在我们的 HashMap 中不存在。计算函数被调用,它返回字符串长度,即 6。我们的 HashMap 现在包含键值对 "banana" / 6,computeIfAbsent() 方法返回值为 6。第二次调用使用字符串 "apple",即我们的 Map 已经包含这个 key。在这里, map.computeIfAbsent("apple", k -> k.length()) 的行为与 map.get("apple") 相同,即返回 1。
computeIfAbsent()
方法是一个非常有用的工具,当您需要从 Map 获取值时,它可以更智能地设置默认值。如果您想要通过计算方式设置默认值,而不是通过硬编码方式,那么它就是您可以使用的最佳工具。