本文主要是介绍Java语法HashMap集合computeIfAbsent()方法使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编程中经常遇到这种数据结构,判断一个map中是否存在这个key,如果存在则处理value的数据,如果不存在,则创建一个满足value要求的数据结构放到value中。以前常用的方法如下:
import java.util.*;public class TestComputeIfAbsent {public static void main(String[] args) {// 数据准备 HashMap中 键是String类型,值是Set集合,Set中存放了String类型元素HashMap<String, Set<String>> map = new HashMap<>();Set<String> set = new HashSet<>();set.add("张三");set.add("王五");map.put("China", set);System.out.println(map);// 判断集合键中有无France, 有则添加李四;没有则添加键France,及对应值李四if (map.containsKey("France")) {// 若存在China,则向键对应的值中添加李四map.get("France").add("李四");} else {// 若不存在ChinaSet<String> tempset = new HashSet<>();tempset.add("李四");map.put("France", tempset);}}
}
官方非常的贴心,为了满足广大用户的要求,加入了computeIfAbsent() 这个api,使用后以上代码变成了下面的形式:
import java.util.*;public class TestComputeIfAbsent {public static void main(String[] args) {// 数据准备 HashMap中 键是String类型,值是Set集合,Set中存放了String类型元素HashMap<String, Set<String>> map = new HashMap<>();Set<String> set = new HashSet<>();set.add("张三");set.add("王五");map.put("China", set);System.out.println(map);map.computeIfAbsent("France", k -> new HashSet<>()).add("李四");System.out.println(map);}
}
map.computeIfAbsent("France", k -> new HashSet<>()).add("李四");
的意思表示key为“France”的建值对是否存在,如果存在则获取France的值,并操作值的set添加数据“lisi"。若不存在,在将键和值创建并put到map中。
这篇关于Java语法HashMap集合computeIfAbsent()方法使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!