Mab*_*lah 5 java lambda predicate conditional-statements java-8
我正在使用Java 8 Lambdas,并且在简单的用例方面取得了成功.我来自Java和C#.NET的混合背景,因此我熟悉代码中的lambda.
在我当前的用例中,我试图从一个名为values的Collection中返回一个List.我这样做成功了
values.stream().map(x -> x).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
相对简单明了.我想做同样的事情,但只从Collection中添加项目,其中项目上的布尔标志设置为true.我认为那会像这样工作
values.stream().map(x -> { if(x.isActive())return ((Model)x);}).collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)
但是编译器一直在显示这个错误:Type mismatch: cannot convert from List<Object> to List<Model>我相信编译器应该足够智能,以便从map函数中知道输出类型,并且确实在我原来的简化示例中.这就是为什么我认为这不是最好的方法.
对于.NET堆栈中的任何人来说,C#/ LINQ中的等价物都是
values.Where(x => x.isActive()).ToList();
Run Code Online (Sandbox Code Playgroud)
我知道有很多其他很好的方法可以在没有lambdas的情况下做到这一点,但我想知道如何使用Java Lambdas在Java中实现这一点?
我认为这filter就是你要找的而不是map
values.stream().filter(x->x.isActive()).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1669 次 |
| 最近记录: |