一 前言

本篇内容是关于 map 新特性的一些方法使用上的介绍,如果有不足之处欢迎补充!!

二 map新特性

关于以下函数式编程的函数的计算知识追寻者都使用 简单字符串代替了,参数无非就是Key,value;

2.1 forEach

forEach迭代,相当于for循环

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key1","小熊猫");

hashMap.put("key2","大熊猫");

// 遍历

hashMap.forEach((key,value) -> {

System.out.println("key:"+key + " value: "+value);

});

}

输出

key:key1 value: 小熊猫

key:key2 value: 大熊猫

2.2 computeIfAbsentjava

如果key的值不存在就使用函数结果代替;

值存在示例,任然是使用旧值;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

// 如果key的值不存在就使用 函数值代替

hashMap.computeIfAbsent("key",s-> { return "处处香";});

// {key=无墨生香}

System.out.println(hashMap);

}

值不存在示例,会使用函数值代替为新值;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

// 如果key的值不存在就使用 函数值代替

hashMap.computeIfAbsent("key",s-> { return "处处香";});

// {key=处处香}

System.out.println(hashMap);

}

2.3 computeIfPresent

如果key的值存在就使用函数值代替,如果 函数值为null , 会移除key;

值存在示例,会使用函数值代替旧值

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

// 如果key的值存在就使用函数值代替

hashMap.computeIfPresent("key",(key,value)-> { return "处处香";});

// {key4=处处香}

System.out.println(hashMap);

}

值不存在示例,为空

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

// 如果key的值存在就使用函数值代替

hashMap.computeIfPresent("key",(key,value)-> { return "处处香";});

// {}

System.out.println(hashMap);

}

如果 函数值为null , 会移除key;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

// 如果key的值存在就使用函数值代替

hashMap.computeIfPresent("key",(key,value)-> { return null;});

// {}

System.out.println(hashMap);

}

2.4 putIfAbsent

当key的值存在时不替换值;当key的值不存在时替换key的值;

当key存在示例,还是旧值;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

hashMap.putIfAbsent("key","处处香");

//{key=无墨生香}

System.out.println(hashMap);

}

当key不存在其实就是put操作;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.putIfAbsent("key","处处香");

//{key=处处香}

System.out.println(hashMap);

}

2.5 getOrDefault

当key的值存在时获取值,否则获取指定的默认值;

key值存在示例

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

//无墨生香

System.out.println(hashMap.getOrDefault("key","处处香"));

}

key值不存在示例

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

//处处香

System.out.println(hashMap.getOrDefault("key","处处香"));

}

2.6 merge

如果key的值不存在会用新的值代替,如果key的值存在会用函数值代替旧值,当函数值为空会移除key;

如果key的值不存在会用新的值(第二参数)代替

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.merge("key","处处香",(key,value) -> { return "点击在看";});

//{key=处处香}

System.out.println(hashMap);

}

如果key的值存在会用函数值代替旧值;新的值(第二参数)不起作用

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

hashMap.merge("key","处处香",(key,value) -> { return "点击在看";});

//{key=点击在看}

System.out.println(hashMap);

}

当函数值为空会移除key;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

hashMap.merge("key","处处香",(key,value) -> { return null;});

//{}

System.out.println(hashMap);

}

总结

到此这篇关于java8中Map的一些骚操作的文章就介绍到这了,更多相关java8中Map操作内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

java putifabsent_java8中Map的一些骚操作总结相关推荐

  1. Java 8 中 Map 骚操作之 merge() 的用法

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | juejin.im/post/5d9b455a ...

  2. 31.模型中的一些查询骚操作——模型中的聚合查询,Q查询,F查询,分组查询;

    模型中的一些查询骚操作: (1)聚合查询:aggregate()是QuerySet 的一个终止子句,它返回一个包含一些键值对的字典 from movie.models import User from ...

  3. 1.7 Java 8中Map新增的方法

    Java 8 除了为 Map 增加了 remove(Object key, Object value) 默认方法之外,还增加了如下方法. 名称 说明 Object compute(Object key ...

  4. java hook全局钩子,牛逼骚操作:Java 虚拟机关闭钩子(Shutdown Hook)!

    码农每日一题 长按关注,工作日每天分享一个技术知识点. Shutdown Hooks 是一种特殊的结构,它允许开发人员插入 JVM 关闭时执行的一段代码. 用途 Application 正常退出(所有 ...

  5. JAVA 算法中Map 使用技巧,持续更新,边学边更

    1 在做一道必须统计出现次数的题目中,使用到了map函数 Map<Integer, Integer> count = new HashMap(); for (int i = 0; i &l ...

  6. C#中word导出功能骚操作

    将没用的东西全部去掉,修改Index.cshtml页面成这样: 复制代码 1 @{ 2 ViewBag.Title = "Home Page"; 3 } 4 5 @ ASP.NET ...

  7. 回忆Java基础中Map的遍历方法

    转自http://blog.163.com/fw_long/blog/static/51771186201392982041337/ keySet是键的集合,Set里面的类型即key的类型 entry ...

  8. java containskey_Java中Map.containsKey的问题

    我自己实现了一个类classMethod{StringclassName,methodName;VectorparameterTypes;}并把Method作为键值,写了一个Map然后我在遍历输出这个 ...

  9. 后端:Java 8 中的 Map 实用操作,学习下!

    merge() 怎么用? merge() 简介 使用场景 其他 总结 Java 8最大的特性无异于更多地面向函数,有时约会了lambda等,可以更好地进行函数式编程. 前段时间无意间发现了map.me ...

最新文章

  1. XamarinForms教程构建XamarinForms开发环境
  2. js中表单验证常用到的正则表达式
  3. 苹果系统的优点和缺点
  4. Spring-Bean标签属性scope范围
  5. 动画 | 空调是怎么制冷的?
  6. php替换中文,PHP中文替换
  7. 【HDU - 5890】Eighty seven(bitset优化背包)
  8. 毕业设计论文封面模板
  9. php addslashes 防注入,PHP基础-addslashes防sql注入-北漂者
  10. Qt 教程(传智教育)
  11. 【微信开发】定制消息推送
  12. 网络系统规划与设计的基本原则
  13. Silver-Slides Chapter 1 - 强化学习入门:基本概念介绍
  14. gtk设计简单的文本编辑器(1)
  15. 查看Debian版本号的方法
  16. 感知机算法(一)---原理
  17. ITIL学习笔记——核心流程之:容量管理
  18. 用什么方法可以改变摄像机逆光补偿
  19. AdvancedInstaller打包工具使用(五)
  20. python初级6(九九乘法表,二进制,ASCII编码,GBK,unicode,utf-8)

热门文章

  1. java简单小项目_Java简易抽奖系统小项目
  2. 配置tomcat_Tomcat 配置必备的 10 个小技巧,让你轻松玩转Tomcat
  3. **Java有哪些悲观锁的实现_「Java并发编程」何谓悲观锁与乐观锁,Java编程你会吗...
  4. python计算PR曲线sklearn.metrics.precision_recall_curve
  5. visual assist安装方法
  6. 图像处理中的通信原理——冈萨雷斯读书笔记(四)
  7. mysql 本地连接_mysql开启远程连接及本地连接
  8. 外设驱动库开发笔记16:MS5536C压力变送器驱动
  9. idea插件开发(01)---最简单的helloworld版,不需要知道原理,先跟我做一个最简单的弹框插件
  10. java clone原理_详解Java中的clone方法 -- 原型模式