Map

132 阅读1分钟

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