都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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值