HashMap新方法
1.getOrDefault
getOrDefault(Object key, V defaultValue):方法获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
System.out.println("a=" + map.getOrDefault("a", 3));
System.out.println("c=" + map.getOrDefault("c", 4));
2.forEach
forEach(BiConsumer<K, V> action):以Lambda的方式遍历Map。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.forEach((k, v) -> {
System.out.println(k + "=" + v);
});
3.merge
merge(key, value, remappingFunction):如果key存在则执行remappingFunction函数,改变key对应的value;如果key不存在则把key-value存起来。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.merge("c", 3, (oldValue, newValue) -> {
return oldValue + newValue;
});
map.merge("a", 2, (oldValue, newValue) -> {
return oldValue + newValue;
});
System.out.println(map);
4.computeIfAbsent
computeIfAbsent(K key, Function remappingFunction):如果指定的key的键值对(k,v)不存在则执行remappingFunction并保存key-value,否则返回对应key的value。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.computeIfAbsent("a", (k) -> {
return 3;
});
map.computeIfAbsent("c", (k) -> {
return 4;
});
System.out.println(map);
5.computeIfPresent
computeIfPresent(K key, BiFunction remappingFunction):如果key存在才执行remappingFunction方法并保存key-value;key存在remappingFunction返回为null则删除key-value。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.computeIfPresent("a", (k, v) -> {
return v + 3;
});
map.computeIfPresent("b", (k, v) -> {
return null;
});
map.computeIfPresent("c", (k, v) -> {java
return 4;
});
System.out.println(map);
6.compute
compute(K key, BiFunction remappingFunction):无论key是否存在都会执行remappingFunction方法,如果key存在则修改value,如果key不存在则保存value,如果key存在remappingFunction返回为null则删除key-value。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.compute("a", (k, v) -> {
return v + 3;
});
map.compute("b", (k, v) -> {
return null;
});
map.compute("c", (k, v) -> {
return 4;
});
System.out.println(map);
7.putIfAbsent
putIfAbsent():方法会先判断指定的键(key)是否存在,不存在则将键/值对插入到映射集中,并返回null,存在则返回原本Value。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
System.out.println(map.putIfAbsent("a", 3));
System.out.println(map.putIfAbsent("c", 4));
System.out.println(map);
8.remove
remove(key,value):当指定的 KEY 与VALUE 在映射集中存在,且为绑定的键值对关系时才移除。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.remove("a", 1);
map.remove("b", 3);
System.out.println(map);
9.replace
replace(K key, V oldValue, V newValue):当指定的key-oldValue存在才把oldValue修改为newValue。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.replace("a", 1, 3);
map.replace("b", 3, 4);
System.out.println(map);
10.replaceAll
replaceAll(Bifunction<K, V> function):替换全部的value。
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.replaceAll((k, v) -> v + 1);
System.out.println(map);