网站首页 > java教程 正文
很多时候,为了方便完成某些功能,大家是挖空心思地去使用一些技巧,让我们的代码更直白美观,下面为大家分享几个Java当中的奇技淫巧。
使用stream实现list转map
普通:对于list转map很多时候大家都使用遍历,然后取出值,放入结果中,如下
神技:使用stream实现,通过Collectors.groupingBy
stream有很多非常直观和好用的方法,例如sum,count,distinct等等
减少非空判断,优雅地使用Objects工具
通常操作的时候使用!=null去做判断,比较不优雅
jdk1.7提供了Objects工具,使用直观方便,很多方法中帮我们做了非空判断,减少!=null的代码
随机数可以使用种子,保证随机规律
有时候为了保存一个固定的值,往往还需要存数据库或者文件,非常麻烦,我们可以通过特定的值,来通过随机数的种子来计算特定的值。
例如第二个print出来的5次循环的值,必然相等。只需要保证seed的值固定,随机数算出的值必然固定。
双大括号语法
很多时候,需要初始化一些list的数据,如果像下面操作,会显得繁琐
神技:使用{{}}语法,如下
注意:很多同学提到此处有问题,不建议程序大量这样使用,由于该方法是匿名内部类初始化方法,会产生很多xxx$1.class,xxx$2.class……的类,会存在内存泄露问题。
特殊场景需要用到的goto
大家都知道java是没有goto语法的,但提供了类似goto语法效果的方法,如下
try-with-resource自动关闭资源
JVM对外部资源的引用却无法自动回收,例如数据库连接,网络连接以及输入输出IO流等,这些连接就需要我们手动去关闭,不然会导致外部资源泄露,连接池溢出以及文件被异常占用等。
因此在IO操作中,我们常常需要写如下的代码,进行手动释放资源
jdk1.7给我们提供了try-with-resource语法,让我们再也不用在finally中调用close方法了,jvm自动调用。
通过MultiValueMap去构建Map<K,List>结构
如果需要构建Map<K,List>结构,推荐使用MultiValueMap去操作
如果还有其他比较好的写法,欢迎大家留言、私信,谢谢
- 上一篇: Java 注解(Annotation)
- 下一篇: 用云存储30分钟快速搭建APP,你信吗?
猜你喜欢
- 2024-12-11 Java多线程系列(四):4种常用Java线程锁的特点...
- 2024-12-11 concurrenthashmap在1.7和1.8中的区别
- 2024-12-11 Java从入门到精通到全栈
- 2024-12-11 Java面试必考问题:Java方法区存储了哪些数据
- 2024-12-11 Java异常处理和最佳实践(含案例分析)
- 2024-12-11 时代变了,对比完Rust,发现Java差一大截!
- 2024-12-11 高并发编程系列:4大Java线程锁全面详解
- 2024-12-11 AMD 锐龙7 2700/锐龙5 2600评测:搭配这个黑科技,游戏变得更快
- 2024-12-11 用云存储30分钟快速搭建APP,你信吗?
- 2024-12-11 Java 注解(Annotation)
你 发表评论:
欢迎- 最近发表
-
- 多种负载均衡算法及其Java代码实现
- 输入www.baidu.com背后经历了啥?说清楚这个,已经超过90%的人了
- 优化MySQL:为什么你应该用 UNSIGNED INT 存储IP地址
- 实模式下CPU如何获取数据及指令(实模式寻址方式)
- java基础都在这了,小主们拿去吧(java基础是指什么)
- 盘点爬虫语言为何选择Python而不是Java
- 搭载Dubbo+Zookeeper踩了这么多坑,我终于决定写下这篇
- 网络协议之TCP/IP协议(面试必考内容) - javaEE初阶 - 细节狂魔
- 深夜报警!10亿次请求暴击,如何用Redis找出最热IP?
- VPN技术(IPsec/L2TP/SSLVPN/PPTP)学习笔记
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)