public V computeIfAbsent(K key, Function super K,? extends V> mappingFunction)
如果 key 对应的 value 不存在,则使用获取 mappingFunction 计算后的值,并保存为该 key 的 value,否则返回 value。
import java.util.HashMap; HashMaphashmap=new HashMap (); hashmap.computeIfAbsent(10, key->Integer.valueOf(7)); HashMap > hashmap=new HashMap >(); hashmap.computeIfAbsent(10, key->new ArrayList ()).add(3); HashMap prices = new HashMap<>(); prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); // 计算 Shirt 的值 int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280);
// java8 之前。从 map 中根据 key 获取 value 操作可能会有下面的操作
Object key = map.get("key");
if (key == null) {
key = new Object();
map.put("key", key);
}
// java8 lambda
Object key = map.computeIfAbsent("key", k -> new Object());
getOrDefault
default V getOrDefault(Object key, V defaultValue)
如果在 map 中存在 key 值则返回 key 对应的映射中的内容,否则返回指定的内容。
HashMaphashmap=new HashMap (); // 不存在 key 值,取 8,同时 key 赋值 8 int test = hashmap.computeIfAbsent(10, key->Integer.valueOf(8)); int test2=hashmap.getOrDefault(11, 8); // 不存在 key 值,取 8,不赋值。



