如何在java 8 stream表达式实现if/else逻辑
2020-04-25 12:04
134 查看
简介
在Stream处理中,我们通常会遇到if/else的判断情况,对于这样的问题我们怎么处理呢?
还记得我们在上一篇文章lambda最佳实践中提到,lambda表达式应该越简洁越好,不要在其中写臃肿的业务逻辑。
接下来我们看一个具体的例子。
传统写法
假如我们有一个1 to 10的list,我们想要分别挑选出奇数和偶数出来,传统的写法,我们会这样使用:
public void inForEach(){ List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); ints.stream() .forEach(i -> { if (i.intValue() % 2 == 0) { System.out.println("i is even"); } else { System.out.println("i is old"); } }); }
上面的例子中,我们把if/else的逻辑放到了forEach中,虽然没有任何问题,但是代码显得非常臃肿。
接下来看看怎么对其进行改写。
使用filter
我们可以把if/else的逻辑改写为两个filter:
List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); Stream<Integer> evenIntegers = ints.stream() .filter(i -> i.intValue() % 2 == 0); Stream<Integer> oddIntegers = ints.stream() .filter(i -> i.intValue() % 2 != 0);
有了这两个filter,再在filter过后的stream中使用for each:
evenIntegers.forEach(i -> System.out.println("i is even"));
oddIntegers.forEach(i -> System.out.println("i is old"));
怎么样,代码是不是非常简洁明了。
总结
lambda表达式需要尽可能的简洁,我们可以用stream的filter来替代if/else业务逻辑。
本文的例子https://github.com/ddean2009/learn-java-streams/tree/master/lambda-if-else
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- Java如何使用Optional与Stream取代if判空逻辑(JDK8以上)
- [shell] if else以及大于、小于、等于逻辑表达式 [转]
- 分支逻辑的实现:switch....case 与 if...else if.....对比
- linux shell中 if else以及大于、小于、等于逻辑表达式介绍
- Java使用Optional与Stream来取代if判空逻辑(JDK8以上)
- java中如何将逻辑运算符字符串转换成逻辑表达式讲解
- linux shell中 if else以及大于、小于、等于逻辑表达式 简介
- Java基础重温_02:运算符(算术运算、+操作、赋值运算、自增自减、关系运算(比较)、逻辑运算、短路逻辑运算、三元运算)、键盘录入、控制流程(if,if...else,if...else...if)
- linux shell中 if else以及大于、小于、等于逻辑表达式介绍
- linux shell中 if else以及大于、小于、等于逻辑表达式介绍
- shell中 if else以及大于、小于、等于逻辑表达式介绍
- js利用与或运算符优先级实现if else条件判断表达式
- Java8如何将Array转换为Stream的实现代码
- 如何用Java 实现 Excel 表达式的解析(摘自:http://topic.csdn.net/t/20030408/17/1634982.html#)
- linux shell中 if else以及大于、小于、等于逻辑表达式介绍
- 如何实现JSTL if else if else 的jsp标签
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现
- jsp中如何用jstl实现if(){}else if(){}else{}
- Java技术_Java千百问(0017)_if else如何使用
- linux shell中 if else以及大于、小于、等于逻辑表达式介绍