使用 lambda 内联过滤避免意外 null

2024-04-30

我有每个元素的列表,我想这样做(使用Java 8):

disabledUsersOnLDAP.stream().forEach(user -> usersRepository
                .findEnabledByUsername(user.getUserName()).setEnabled(false));

然而usersRepository.findEnabledByUsername可能会回来null.

当然我可以这样做:

disabledUsersOnLDAP.stream().forEach(user -> {
    UserEntity userEntity = usersRepository.findEnabledByUsername(user.getUserName()); 
    {
        if (userEntity != null) {
            userEntity.setEnabled(false);
        }
    }
});

但我想知道我是否可以做到null检查内联(在第一个选项中)?


您可以在运行之前进行映射+过滤forEach部分,这也使它更具可读性:

disabledUsersOnLDAP.stream()
            .map(user -> usersRepository.findEnabledByUsername(user.getUserName()))
            .filter(userEntity -> userEntity != null)
            .forEach(userEntity -> userEntity.setEnabled(false));

或者作为替代方案:

disabledUsersOnLDAP.stream()
            .map(User::getUsername)
            .map(usersRepository::findEnabledByUsername)
            .filter(Objects::nonNull)
            .forEach(userEntity -> userEntity.setEnabled(false));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 lambda 内联过滤避免意外 null 的相关文章

随机推荐

  • iOS 全屏 Web 应用程序会丢弃 cookie?

    我经历过 当您启动 退出保存到仪表板 全屏模式 的网络应用程序时 iOS4 会丢弃 cookie 这是真的吗 有解决方法吗 这不是一个错误 这是一个功能 会话 cookie 即生命周期为 0 的 cookie 会在浏览器会话结束时被删除 在
  • Ruby 中类单例方法的方法查找

    我的印象是obj method导致 ruby 寻找method thusly Look in obj的单例类 查看包含的模块obj的单例类 Look in obj的班级 查看包含的模块obj s class 对类的超类重复步骤 3 和 4
  • 如果执行 shell 失败,jenkins 构建不会失败

    作为构建过程的一部分 我运行 git commit 作为执行 shell 步骤 但是 如果工作区中没有任何更改 Jenkins 将导致构建失败 这是因为当没有要提交的更改时 git 返回错误代码 如果是这种情况 我想要么中止构建 要么将其标
  • 如何在透明背景图像后面添加背景颜色?

    我试图在透明背景图像后面添加背景颜色 但它不起作用 我希望它位于名为 标题 的 div 中 我尝试先使用 png 文件 然后使用 gif 文件 我以为所有的 gif 都是透明图像 任何帮助 将不胜感激 heading background
  • 如何使用 NSHost 获取外部 IP 地址?

    我试图找到我的外部 IP 地址 但我只能找到位于 NAT 后面的本地 IP 地址 NSArray addresses NSHost currentHost addresses 有没有办法打印出公共地址 使用 NSHost 是个好主意吗 可能
  • 作为属性的自定义类的数组

    我试图使用自定义类的数组作为我的组件的属性 但问题是这些值没有保存到组件中 这意味着如果我设置值 保存所有内容并再次打开项目 组件的值消失 我的代码如下所示 unit Unit1 interface uses Windows ExtCtrl
  • 在C#中创建对象而不使用new关键字? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有没有一种方法可以在 C 中不使用
  • 如何在 Ubuntu 10.04 上使用 PostgreSQL 8.4.4 生成 uuid?

    我正在 Ubuntu 10 04 上运行 PostgreSQL 8 4 4 我正在尝试生成 uuid 但找不到方法 我确实有 uuid ossp sql usr share postgresql 8 4 contrib uuid ossp
  • 如何在 Angular 5 中执行缓存 http get 请求?

    import Injectable from angular core import HttpClient HttpErrorResponse from angular common http import Observable from
  • Node.js 管理频繁变化的本地依赖项

    我目前正在开发我的第一个较大的 Node js 应用程序 该应用程序应该使用类似插件的依赖项尽可能模块化地工作 因为我处于开发的早期阶段 而且对节点也很陌生 所以这涉及大量的试验和错误 因此我需要经常重新启动应用程序 因此启动时间应尽可能短
  • Global.asax 模板在 Visual Studio 中不可用

    当我尝试向我的网络项目 添加新项目 通过右键单击 添加新项目 时 没有适合它的模板 可能是什么问题 我用的是VS2008 附加信息 当我右键单击解决方案并 添加 新网站 时 我有零个模板可供选择 我尝试过跑步devenv installvs
  • Windows Phone 8.1 XAML 应用程序显示奇怪的版本

    我已经为我现有的应用程序之一创建了 Windows Phone 8 1 XAML 版本 我将包版本设置为1 5 0 0 创建的文件名为SlovakApps WindowsPhone 1 5 0 1 AnyCPU bundle appxupl
  • 返回“数据”可能会暴露内部数组?

    考虑一下这个 public class Data private final SomeField fields public SomeField getFields return map null null map clone 安全性 方法
  • Firebase 数据库 - 编码错误

    我是 Firebase 的新手 我想使用他们的数据库 但编码似乎存在一些问题 这是我使用 UTF 8 编码的示例 json Stack This is madness Overflow 666 这就是当我将 json 导入 Firebase
  • 如何使用 pyodbc 和 MS-Access 在 Python Cursor.execute 中查看真实的 SQL 查询

    我在 Python 中使用以下代码 使用 pyodbc 作为 MS Access 基础 cursor execute select a from tbl where b and c x y 没关系 但是出于维护目的 我需要知道发送到数据库的
  • 如何更改水晶报表文件上的数据源类型

    是否可以更改水晶报表文件上的数据源类型而无需重建整个报表 我知道我可以转到 数据库 设置数据源位置 并更改一些数据源定义 例如服务器名 登录名 密码 但是我需要做什么才能从 ODBC RDO 数据源类型更改为 OLEDB 我已经尝试向报表添
  • Vue.js 路由器 - 条件组件渲染

    routes path name home get component if Vue loggedIn return Home else return Login 我添加了一个吸气剂 似乎工作正常 但我在 if 语句中使用的任何变量或函数都
  • jquery 陷印只允许字母

    我正在创建一个网页 其中有一个输入文本字段 我只想在其中只允许输入字母表 我怎样才能使用 jQuery 来实现它 Thanks jquery inputmask http plugins jquery com project inputma
  • swfobject.embedSWF 不起作用?

    以下代码使用 SWFObject 将 Flash 动画嵌入到 HTML 文档中 仅显示替代内容 为什么
  • 使用 lambda 内联过滤避免意外 null

    我有每个元素的列表 我想这样做 使用Java 8 disabledUsersOnLDAP stream forEach user gt usersRepository findEnabledByUsername user getUserNa