使用Java 8流的if-else条件 [英] if-else condition using java 8 stream
本文介绍了使用Java 8流的if-else条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
场景:在某些情况下,我需要使用Java 8流API根据某些字段条件为对象的List
设置一些值.
Scenario: There is a situation where I need to set some values to List
of objects based on some field condition using the Java 8 streams API.
下面是对象User
的示例.
public class User{
private int id;
private String name;
private String text;
private boolean isActive;
}
这是我计算出的代码
List<User> users = userDao.getAllByCompanyId(companyId);
users.stream()
.filter(Objects::nonNull)
.filter(User::isActive)
.peek(user -> user.setText('ABC'))
.filter(user -> !user.isActive())
.peek(user -> user.setText('XYZ')
我知道我根据条件将值设置为对象的方式是错误的.
I know that the way I have written to set the values to object based on condition is wrong.
这只是使用流的一种尝试,最后我需要将值设置为users
对象.
This is just a try-out using stream, at the end I need to set values to users
object.
有什么方法可以处理if-else条件.
Is there any way to handle if-else condition.
推荐答案
也许您过于复杂了.
List<User> users = new ArrayList<>();
users.stream()
.filter(Objects::nonNull)
.forEach(u -> u.setRole(u.isActive()?"ABC":"XYZ"));
这篇关于使用Java 8流的if-else条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文