HashMap
1. computeIfAbsent(新值替换空值)
Map<String, List<String>> map = new HashMap();
map.put("a", new ArrayList(Arrays.asList("A")));
map.put("b", new ArrayList(Arrays.asList("B")));
// java8之前
List<String> key = map.get("key");
if (key == null) {
key = new ArrayList<>();
map.put("key", key);
}
//java8之后 如果 a值等于null 则将 新的集合对象存入
List<String> list = map.computeIfAbsent("a", k -> new ArrayList<>());
System.out.println(list);
2. getOrDefault(为空返回默认值)
//之前
List<String> list = map.get("a");
if(list==null){
list=new ArrayList<>();
}
//之后 如果a值等于null 则返回默认值
map.getOrDefault("a",new ArrayList<>());
TreeMap
1. floorEntry (范围查找)
场景:按照名次对进入排行榜的用户进行积分奖励,前三名对应相应名次,4-10对应第四名,5-20对应第五名,依次类推。可以使用floorEntry()方法进行范围查找
TreeMap treeMap = new TreeMap();
treeMap.put(1, 1);
treeMap.put(2, 2);
treeMap.put(3, 3);
treeMap.put(10, 4);
treeMap.put(20, 5);
System.out.println(treeMap);
//找到 key<=16 的第一个值 没有则返回null
System.out.println(treeMap.floorEntry(16));
输出
{1=1, 2=2, 3=3, 10=4, 20=5}
4