Map增强
AI-摘要
WenXi GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
Map增强
Java8 为我们提供了一系列对Map接口的增加,通过lambda表达式的引入,简化了一些Map的常用操作,如:当key不存在时返回默认值,key不存在时才put等。
Map<String,Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
1、forEach
循环遍历Map键值对
// 遍历时,map的key和value将作为lambda表达式的参数
MAP.forEach((key, val) -> System.out.println("key = " + key + ", value = " + val));
2、getOrDefault
key不存在时返回默认值
map.getOrDefault("test", 100);
//等价于
map.get("test") != null ? map.get("test") : 100;
3、putIfAbsent
key不存在时才put
// 不存在e这个key就把5放进去
map.putIfAbsent("e", 5);
// 等价于下面的操作
if (map.get("e") == null) {
map.put("e", 5);
}
4、computIfAbsent
key不存在或value为null时,计算一个新值,非null则put进去并返回新值,null则什么都不做,返回旧值。key存在则不改变,返回旧值
map.computeIfAbsent("hello", key -> key.length());
// 等价于
if (map.get("hello") == null) {
map.put("hello", "hello".length());
return map.get("hello"); //5
} else {
return map.get("hello"); //原来的值
}
5、computeIfPresent
key存在且value不为null,就计算一个新的值替换老值,返回新值,如果新值为null,则删除该key。key不存在,则什么都不做,返回null。
map.get("a"); //1
// 如果key存在就计算一个新的值替换老值
map.computeIfPresent("a", (oldKey, oldVal) -> oldVal * 2);
// 等价于
if (map.get("a") != null) {
map.put("a", map.get("a") * 2); //2
}
6、merge
如果key不存在,则创建key,赋值。如果key存在,则取出旧值,合并(自定义)旧值、新值赋值
map.get("b"); //2
// 合并key的老值和指定值为一个新值设置进去,put并返回,如果老值不存在就直接把给定值作为新值设置进去,不用进行合并
map.merge("b", 3, (oldVal, givenVal) -> oldVal + givenVal);
map.get("b"); //5
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 平凡先生/文奚
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果