使用Java 8流的if-else条件 [英] if-else condition using java 8 stream

查看:113
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆