都2020年了,你还不会写简洁的Java代码!(转载)
使用Google Guava依赖
com.google.guava
guava
29.0-jre
1
2
3
4
5
创建一个list集合并赋值
最原始的办法:
List stringList = new ArrayList<>();
stringList.add(“jack”);
stringList.add(“pony”);
stringList.add(“ekko”);
1
2
3
4
简单改造:
List stringList2 = new ArrayList(4) {{
add(“jack”);
add(“pony”);
add(“ekko”);
}};
1
2
3
4
5
终极改造:
List stringList3 = ImmutableList.of(“jack”, “pony”, “ekko”);
1
去除list中的空值
一般做法:
List nameList = new ArrayList<>();
List noNullList = new ArrayList<>();
nameList.add(“jack”);
nameList.add(“pony”);
nameList.add(“ekko”);
nameList.add(null);
for (String o : stringList) {
if (o != null) {
noNullList.add(o);
}
}
1
2
3
4
5
6
7
8
9
10
11
使用lamda简化后的写法:
List noNullListFun = nameList
.stream()
.filter(Objects::nonNull)
.collect(Collectors.toList());
1
2
3
4
list中的值求和
原始做法:
List numList = new ArrayList(10) {{
add(BigDecimal.valueOf(111L));
add(BigDecimal.valueOf(8888.22));
add(BigDecimal.valueOf(333.22));
add(BigDecimal.valueOf(857857.22));
add(BigDecimal.valueOf(5331.22));
}};
BigDecimal total = BigDecimal.ZERO;
for (BigDecimal num : numList) {
total = total.add(num);
}
System.out.println(total);
1
2
3
4
5
6
7
8
9
10
11
12
简化一下:
List numListSimple = ImmutableList.of(BigDecimal.valueOf(111L)
, BigDecimal.valueOf(8888.22), BigDecimal.valueOf(333.22)
, BigDecimal.valueOf(857857.22), BigDecimal.valueOf(5331.22));
// 求和
BigDecimal totalNum = BigDecimal.valueOf(numListSimple.stream().mapToDouble(BigDecimal::doubleValue).sum());
1
2
3
4
5
判断值是否为空
原始写法:
public static String getUserName() {
return null;
}
// 模拟调用服务
String username = getUserName();
String res;
if (username != null) {
res = username;
} else {
res = “游客”;
}
1
2
3
4
5
6
7
8
9
10
11
简化:
String userName = Optional.ofNullable(username).orElse(“游客”);
System.out.println(userName);
1
2
从多个集合中取匹配的值
原始方法:
package com.github.springtools.test;
import com.google.common.collect.ImmutableList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class TestFlatMap {
public static void main(String[] args) {
/*
* 匹配到姓马的并去重然后放入一个新的集合中
*/
List nameListA = ImmutableList.of(“素云云”, “马云云”, “腾花花”, “阿娇娇”, “马飞飞”, “廖妹妹”);
List nameListB = ImmutableList.of(“素云涛”, “唐三三”, “小五五”, “马中山”, “马僻静”, “马肥羊”);
List nameListC = ImmutableList.of(“张三”, “李四”, “王二”, “麻子”, “上官玩儿”, “马可菠萝”);
Set nameSet = new HashSet<>();
nameListA.forEach(n -> {
if (n.startsWith(“马”)) {
nameSet.add(n);
}
});
nameListB.forEach(n -> {
if (n.startsWith(“马”)) {
nameSet.add(n);
}
});
nameListC.forEach(n -> {
if (n.startsWith(“马”)) {
nameSet.add(n);
}
});
System.out.println(nameSet.toString());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
改造后的代码:
import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class TestFlatMap2 {
public static void main(String[] args) {
/*
* 匹配到姓马的并去重然后放入一个新的集合中
*/
List nameListA = ImmutableList.of(“素云云”, “马云云”, “腾花花”, “阿娇娇”, “马飞飞”, “廖妹妹”);
List nameListB = ImmutableList.of(“素云涛”, “唐三三”, “小五五”, “马中山”, “马僻静”, “马肥羊”);
List nameListC = ImmutableList.of(“张三”, “李四”, “王二”, “麻子”, “上官玩儿”, “马可菠萝”);
Set nameSet = Stream.of(nameListA, nameListB, nameListC)
.flatMap(list -> list.stream().filter(name -> name.startsWith(“马”)))
.collect(Collectors.toSet());
System.out.println(nameSet.toString());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
总结
Java之道,写的代码第一点是要别人能看的明白,不然你离职了留下一堆像shi一样的代码,接盘的人一定会问候你的亲人,何必呢
二是要利用一切可以利用的工具类,不过用的时候看看别人的源码,写的时候考虑的周全与否,这样基本你的代码显性来看会少很多
总之,功能一点点实现,大道至简,用最简单的代码实现最强的逻辑~
原文链接:https://blog.csdn.net/Fine_Cui/java/article/details/106737184
都2020年了,你还不会写简洁的Java代码!(转载)相关推荐
- 都2020年了,还在迷信啤酒与尿布!数据分析的真相是……
一提人工智能大数据,必有人提啤酒与尿布,有意思的是,都2020年了,还有人信这个老掉牙的都市传说.今天我们系统讲解一下. 1 站在背后的关联规则 支持啤酒与尿布故事的,是关联规则算法.注意:关联规 ...
- cdialog创建后马上隐藏_都2020了,你还没用上这些Windows的“隐藏神技能”?
如今,电脑系统 的天下都被Windows和macOS给占领了,那么它们之间的较量自然是不少.关于它们谁更好用的话题从来就没断过,也从来没有什么标准答案,只能说是萝卜青菜各有所爱吧.可每次看到那些说Wi ...
- 写了这么久Java项目,是否还记得你的第一行Java代码
前言 个人情况 首先介绍一下本人的情况,我来自于一个双非渣渣二本学院,目前处于大四阶段,由于在小学的时候就开始接触了电脑,一直以来也对IT的各方面有着浓厚的兴趣,所以在高考结束填写志愿书的时候,就毅然 ...
- 后端开发需要学什么_都2020年了,还在纠结学什么语言?| 后端篇
几个礼拜前,一个学弟问我: "Ray,我打算之后要找工作了,不过现在自己没有特别深入的语言,最近想找一门好好学一下,你觉得学什么语言好呀?" 我表示:"这个要看你求职方向 ...
- winre drv分区干嘛用的_都2020年了,还在给硬盘分区?看完你就知道有没有必要了...
电脑硬盘,到底该不该分区? 很多人买了新电脑或者在电脑中安装了SSD硬盘之后,第一个步骤就是:开机-给硬盘分区. 但是,大家有没有考虑过,硬盘是否真的需要分区呢?这不最近有人就在程序员社区V2EX上提 ...
- css字体样式代码大全_这都2020年了,还没了解CSS?
对于新人来说想要了解css,就要从最基本的入手了解,讲真的学习css入门很简单,学习html和css短时间后你就可以制作一个网页,深入的去学习的话,就会很难.他就是从简--深--深--简的一个过程,如 ...
- 安卓源代码_都2020年了,还有人以为安卓系统是谷歌的?
阅读本文前,请您先点击上面的蓝色字体"杨观世界",再点击"关注",这样您就可以免费收到最新内容了.每天都有分享,完全是免费订阅,请放心关注. 4月8日晚,华为结 ...
- 骚年都2020年了你还在用EventBus吗?jetpack之liveData
在说源码时简单说下liveData使用 //在app的build添加依赖 //使用liveData implementation 'androidx.lifecycle:lifecycle-exten ...
- 都2020年了,别再迷信啤酒与尿布!数据分析的真相在这
一提人工智能大数据,必有人提啤酒与尿布,有意思的是,都2020年了,还有人信这个老掉牙的都市传说.今天我们系统讲解一下. 一.站在背后的关联规则 支持啤酒与尿布故事的,是关联规则算法.注意:关联规则算 ...
最新文章
- ngx_lua module 模块安装
- antd table设置表格一个单元格的字体颜色_微软Office三件套,各有一个效率神器,全都知道的人不超过1%...
- 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案
- 使用 TABLESAMPLE 限制结果集
- numpy教程:统计函数Statistics
- eNSP模拟器拓扑图:浮动路由的实际作用和分析,默认路由的配置,抓包分析
- 7个开源的SNS社交网络平台
- 开源,想说爱你不容易
- Apollo添加新的can通信接口的GPS设备
- 给站长推荐几本IT书
- linux锐捷代码_告诉你Ubuntu Linux锐捷安装方法及命令
- 网页设计html图片滚动特效,网站设计|滚动特效全面讲解!
- C专家编程 第9章 再论数组 9.6 C语言的多维数组
- OSChina 周日乱弹 —— 进入读图时代
- 【2020-8-9】APM,PX4,GAZEBO,MAVLINK,MAVROS,ROS之间的关系以及科研设备选型
- 计算机蓝屏幕亮度,电脑屏幕亮度怎么调,电脑屏幕亮度调节方法
- Unity计时器功能
- 邮件客户端 web linux,Linux下五个流行的Webmail
- 【学习笔记】数理统计习题八
- python firefly 游戏引擎 教程(二) 程序入口