Java的HashMap中的computeIfAbsent方法
public class Main { public static void main(String[] args) { Map<Integer, Integer> map = new HashMap<Integer, Integer>(); map.put(1, 10); map.put(2, 20); map.put(3, 30); System.out.println("初始化的:" + map); map.computeIfAbsent(4, key -> 40); // 如果本身不存在,那就会为map添加新的映射关系key -> value,也就是相当于用了map.put(4,40) System.out.println("如果key本来不存在的: " + map); map.computeIfAbsent(3, key -> 50); // 如果本身存在,那就不造成任何影响 System.out.println("如果key本来存在的: " + map); } }
输出的就是
初始化的:{1=10, 2=20, 3=30} 如果key本来不存在的: {1=10, 2=20, 3=30, 4=40} 如果key本来存在的: {1=10, 2=20, 3=30, 4=40}
Java HashMap computeIfPresent() 方法
如果key对应的 value 不存在,则返回该 null.
如果key存在,且新的操作使得value为null,那么会删除这个key,返回null.
如果key存在,且新的操作使得value不为null, 则返回通过 remappingFunction 重新计算后的值。
public 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); // 如果不存在,返回值为null Integer pair = prices.computeIfPresent("Pair", (key, value) -> value + 100); System.out.println("如果不存在,返回值为:" + pair); System.out.println(prices); // 重新计算鞋加上10%的增值税后的价值 int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); System.out.println("Price of Shoes after VAT: " + shoesPrice); // 输出更新后的HashMap System.out.println("Updated HashMap: " + prices); } }