java8 map中的 compute computeIfAbsent putIfAbsent
原创 forever 发表于:2022-05-03 13:59:15
  阅读 :74   收藏   编辑

compute

    Map<String, String> map = new HashMap<>();
    map.put("name","zhangSan");
    // key存不存在都返回最新的
    String val = map.compute("name", (k,v) -> "liSi"); // 返回: liSi
    String val2 = map.compute("age", (k,v) -> "18"); // 返回 18

computeIfAbsent

    Map<String, String> map = new HashMap<>();
    map.put("name","zhangSan");
    // key存在时返回存在的值,不存在时返回新值
    String val = map.computeIfAbsent("name", k -> "liSi"); // 返回: zhangSan
    String val2 = map.computeIfAbsent("age", k -> "18"); // 返回 18

putIfAbsent

    Map<String, String> map = new HashMap<>();
    map.put("name","zhangSan");
    // key存在返回旧值,如果没有则返回null
    String val = map.putIfAbsent("name", "liSi"); // 返回: zhangSan
    String val2 = map.putIfAbsent("age", "18"); // 返回 null