
一介闲人
一介闲人
Hashmap 的默认初始容量是 16,负载因子是 0.75。如果知道数据量较大,可以在初始化时设置初始容量和负载因子,以减少扩容次数,提高性能。
Map<String, Object> map = new HashMap<>(64,0.8f);
compute
方法动态计算值compute
方法可以根据键动态计算值,并将其放入 Hashmap 中。
Map<String, Integer> map = new HashMap<>();
map.put("test",1);
map.compute("test", (key,value) -> value == null ? 1 : value + 1 );
System.out.println(map.get("test"));//输出:2
merge
方法合并值merge
方法可以合并键对应的值,特别适合用于统计或累加场景。
Map<String, Integer> map = new HashMap<>();
map.put("test", 1);
map.merge("test", 1, Integer::sum);
System.out.println(map.get("test"));//输出:2
getOrDefault
方法避免空指针getOrDefault
方法可以在键不存在时返回默认值,避免空指针异常。
Map<String, Integer> map = new HashMap<>();
map.put("test", 1);
int count = map.getOrDefault("test1", 0);
System.out.println(count);//输出:0
putIfAbsent
方法避免覆盖putIfAbsent
方法只有在键不存在时才会插入值,避免覆盖已有值。
Map<String, Integer> map =new HashMap<>();
map.put("test", 1);
map.putIfAbsent("test", 2);
System.out.println(map.get("test"));//输出:1
forEach
方法遍历forEach
方法可以简化 HashMap
的遍历操作。
Map<String, Integer> map=new HashMap<>();
map.put("test1", 1);
map.put("test2", 2);
map.forEach((key,value)->System.out.println(key + ":"value));
// 输出:
// test1:1
// test2:2
entrySet
高效遍历entrySet
方法返回键值对的集合,适合需要同时访问键和值的场景。
Map<String,Integer> map = new HashMap<>();
map.put("test1"1);
map.put("test2",2);
for (Map.Entry<String, Integer> entry : map.entrySet()){
System.out.println(entry.getKey() + ":" + entry.getValue());
}
computeIfAbsent
延迟计算值computeIfabsent
方法可以在键不存在时动态计算值,并将其放入 HashMap
中。
Map<String, List<String>> map= new HashMap<>();
map.computeIfAbsent("tests", k -> new ArrayList<>()).add("test1");
System.out.println(map.get("tests"));//输出:[test1]
replace
方法更新值replace
方法可以更新指定键的值,只有在键存在时才会更新。
Map<String, Integer> map = new HashMap<>();
map.put("test",1);
map.replace("test",2);
System.out.println(map.get("test"));//输出:2
replaceAll
方法批量更新值replaceAll
方法可以批量更新 HashMap 中的所有值。
Map<String, Integer> map = new HashMap<>();
map.put("test1", 1);
map.put("test2", 2);
map.replaceAll((key,value -> value * 2 );
System.out.println(map);//输出:{test1=2,test2=4}
remove
方法删除键值对remove
方法可以删除指定键的键值对。
Map<String,Integer> map=new HashMap<>();
map.put("test", 1);
map.remove("test");
System.out.println(map.containsKey("test"));//输出:false
keySet
和 values
方法获取键或值集合keySet
方法返回所有键的集合,values
方法返回所有值的集合.
Map<String, Integer> map = new HashMap<>();
map.put("test1", 1);
map.put("test2", 2);
Set<String> keys = map.keySet();
Collection<Integer> values = map.values();
System.out.println(keys);// 输出:[test1,test2]
System.out.println(values);//输出:[1,2]
LinkedHashMap
保持插入顺序LinkedHashMap
是 HashMap
的子类,可以保持键值对的插入顺序。
Map<String, Integer> map =new LinkedHashMap<>();
map.put("test1", 1);
map.put("test2", 2);
map.forEach((key, value)->System.out.println(key +":" +value));
// 输出:
// test1: 1
// test2: 2
TreeMap
实现排序TreeMap
是 HashMap
的另一种变体,可以根据键的自然顺序或自定义顺序排序。
Map<String, Integer> map = new TreeMap<>();
map.put("test2",2);
map.put("test1",1);
map.forEach((key,value)->System.out.println(key + ":" + value));
// 输出:
// test1:1
// test2:2
评论