【问题标题】:Java Lambda's Parse down a Collection with a Conditional CheckJava Lambda 使用条件检查解析集合
【发布时间】:2014-12-26 18:58:40
【问题描述】:

我正在使用 Java 8 Lambda,并且在简单的用例方面取得了成功。我来自 Java 和 C# .NET 的混合背景,所以我熟悉代码中的 lambda。

在我当前的用例中,我试图从一个名为值的集合中返回一个列表。我已经像这样成功地做到了这一点

values.stream().map(x -> x).collect(Collectors.toList());

相对简单直接。我想做同样的事情,但只从集合中添加项目,其中项目上的布尔标志设置为 true。我认为这会像这样工作

values.stream().map(x -> { if(x.isActive())return ((Model)x);}).collect(Collectors.toList())

但是编译器一直显示这个错误:Type mismatch: cannot convert from List<Object> to List<Model> 我相信编译器应该足够聪明,可以知道 map 函数的输出类型,并且确实在我最初的简化示例中做到了。这就是为什么我认为这不是最好的方法。

对于任何来自 .NET 堆栈的人来说,C#/LINQ 中的等价物是

values.Where(x => x.isActive()).ToList();

我知道在没有 lambda 的情况下还有很多其他好方法可以做到这一点,但我想知道如何使用 Java Lambda 在 Java 中实现这一点?

【问题讨论】:

    标签: java lambda java-8 conditional-statements predicate


    【解决方案1】:

    我认为filter 是您要找的,而不是map

     values.stream().filter(x->x.isActive()).collect(Collectors.toList());      
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多