龙空技术网

Map的computeIfAbsent用法

她的名字ych 263

前言:

而今兄弟们对“java判断map的value是否为空”大约比较注重,小伙伴们都想要分析一些“java判断map的value是否为空”的相关知识。那么小编在网摘上网罗了一些关于“java判断map的value是否为空””的相关知识,希望兄弟们能喜欢,看官们快快来了解一下吧!

computeIfAbsent(K key, Function remappingFunction):如果map中的key对应的value为null,则重新将计算后的值放入到Map中。

案例一

新建一个Map,此Map集合初始化的时候没有放入任何的键值对,当调用方法后存入对应的值即可。

Map<String, String> map = new HashMap<>();map.computeIfAbsent("id", k->"123456");System.out.println(map);输出:{id=123456}
案例二

相比大家在实际场景中,碰到map中的value是List数组,这个时候computeIfAbsent就体现出其作用了。

public class ComputeIfAbsentTest {    public static void main(String[] args) {        Map<String, List<String>> map = new HashMap<>(16);        List<String> list = new ArrayList<>();        for (int i = 0; i < 5; i++) {            list.add("id:" + i);        }        for (String s : list) {            List<String> value = map.get(s);            if (value == null){                value = new ArrayList<>();            }            value.add(s);            map.put(s, value);        }        System.out.println(map);    }}输出:{id:0=[id:0], id:2=[id:2], id:1=[id:1], id:4=[id:4], id:3=[id:3]}

下面将上面代码修改一下,一句话就能替代上面的map的判断赋值

public class ComputeIfAbsentTest {    public static void main(String[] args) {        Map<String, List<String>> map = new HashMap<>(16);        List<String> list = new ArrayList<>();        for (int i = 0; i < 5; i++) {            list.add("id:" + i);        }        for (String s : list) {            map.computeIfAbsent(s, k -> new ArrayList<>()).add(s);        }        System.out.println(map);            }}输出:{id:0=[id:0], id:2=[id:2], id:1=[id:1], id:4=[id:4], id:3=[id:3]}
案例三

当map集合中key对应的值不为空时,则后面的函数式计算不做处理。

Map<String, String> map = new HashMap<>();map.put("1","1");map.computeIfAbsent("1", k->"1111");System.out.println(map);输出:{1=1}

标签: #java判断map的value是否为空