前面做了关于Map的学习,在JDK1.8之后,增加了关于Map几个实用的方法;
1.putIfAbsent
我们在使用map的put时可以向集合中增加数据,如果Key已经存在值则替换,而putIfAbsent 这个方法添加时如果Key存在值则不替换。
Map<Integer,String> map=new HashMap<>();
map.put(1,"aaa");
map.put(2,"bbb");
map.put(3,"fffs");
map.putIfAbsent(3,"ssss");
map.forEach((k,v)->{
System.out.println(v);
});
效果
aaa
bbb
fffs
2.getOrDefault
相关于数据库中的ISNULL(K,DEFAULT) 的方法,当我们根据key读取map时,而Key不存在,则返回一个默认值,如果存在则返回存在值。
Map<Integer,String> map=new HashMap<>();
map.put(1,"aaa");
map.put(2,"bbb");
map.put(3,"fffs");
String va=map.getOrDefault(4,"null");
System.out.println(va);
运行结果
null
3.remove
如果根据key进行删除时直接只传key参数,如果把key与value一起传的话,当value与对应的值不同时则不删除
Map<Integer,String> map=new HashMap<>();
map.put(1,"aaa");
map.put(2,"bbb");
map.put(3,"fffs");
map.remove(1,"3333");//故意不同
map.forEach((k,v)->{
System.out.println(v);
});
运行结果
aaa
bbb
fffs
4.replace
如果把key + 新的value +旧的value 一起传的话,当旧value与对应的值不同时则不替换
Map<Integer,String> map=new HashMap<>();
map.put(1,"aaa");
map.put(2,"bbb");
map.put(3,"fffs");
map.replace(1,"test","sss");;//故意不同
map.forEach((k,v)->{
System.out.println(v);
});
效果
aaa
bbb
fffs
5.computeIfAbsent
当传入的比较值不存在时,处理新部分,当存在时会把新部分与旧部分发生关系。
Map<Integer,String> map=new HashMap<>();
map.put(1,"aaa");
map.put(2,"bbb");
map.put(3,"fffs");
map.computeIfAbsent(5,(va)->va+"xxxxxxx");//传入不存在值
map.forEach((k,v)->{
System.out.println(v);
});
效果
aaa
bbb
fffs
5xxxxxxx
6.merge
合并,当存在时与旧部分进行合并,当不存在时则以新值存储。
Map<Integer,String> map=new HashMap<>();
map.put(1,"aaa");
map.put(2,"bbb");
map.put(3,"fffs");
map.merge(6,"9999",(vs1,vs2)->vs1+vs2);//传入不存在值
map.forEach((k,v)->{
System.out.println(v);
});
效果
aaa
bbb
fffs
9999
仅收集这些,你觉得还有那些实用的欢迎留言评论。