HashMap新方法


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);

文章作者: 威@猫
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 威@猫 !
评论
  目录