Java的Map中put,compute,computeIfAbsent,putIfAbsent与的区别

Java的Map中put,compute,putIfAbsent,computeIfAbsent与的区别

1.put
如果key存在,则用新的值替换,返回旧值
如果key不存在,则添加,返回null

@Test
    public void testMap() {
    
    
        Map<String, String> map = new HashMap<>();
        map.put("a","A");
        map.put("b","B");
        String v = map.put("b","v"); // 输出 B
        System.out.println(v);
        String v1 = map.put("c","v");
        System.out.println(v1); // 输出:NULL
    }

2.compute(与put不同的是返回新值)
如果key存在,则用新的值替换,返回新的值
如果key不存在,则添加,返回新的值

@Test
    public void testMap() {
    
    
        Map<String, String> map = new HashMap<>();
        map.put("a", "A");
        map.put("b", "B");
        String val = map.compute("b", (k, v) -> "v"); // 输出 v
        System.out.println(val);
        String v1 = map.compute("c", (k, v) -> "v"); // 输出 v
        System.out.println(v1);
    }

3.putIfAbsent
如果key存在,则不会替换,返回旧值
如果key不存在,则添加,返回null

@Test
    public void testMap() {
    
    
        Map<String, String> map = new HashMap<>();
        map.put("a","A");
        map.put("b","B");
        String v = map.putIfAbsent("b","v");  // 输出 B
        System.out.println(v);
        String v1 = map.putIfAbsent("c","v");  // 输出 null
        System.out.println(v1);
    }

4.computeIfAbsent
如果key存在,不会替换,返回旧值
如果key不存在,则添加,返回新的值

@Test
    public void testMap() {
    
    
        Map<String, String> map = new HashMap<>();
        map.put("a","A");
        map.put("b","B");
        String v = map.computeIfAbsent("b",k->"v");  // 输出 B
        System.out.println(v);
        String v1 = map.computeIfAbsent("c",k->"v"); // 输出 v
        System.out.println(v1);
    }

猜你喜欢

转载自blog.csdn.net/cst522445906/article/details/125515887