nim*_*o23 5 java java-8 java-stream
我有一个"项目"列表,每个项目都有item.posts属性(这是一个后期实例列表).
我想通过两个属性过滤我的"item"-list:
如果"item.isBig"并且如果启用了项目的任何帖子,则收集返回的项目Stream.
但是,我不知道如何使用"i.getPosts#isEnabled"执行"anyMatch".
items.stream()
.filter(Item::isBig)
.anyMatch(i.getPosts()->p.isEnabled) // this does not work
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
anyMatch是一个终端操作,所以你不能与它结合使用collect.
您可以应用两个过滤器:
List<Item> filtered =
items.stream()
.filter(Item::isBig)
.filter(i -> i.getPosts().stream().anyMatch(Post::isEnabled))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
或将它们组合成一个过滤器:
List<Item> filtered =
items.stream()
.filter(i -> i.isBig() && i.getPosts().stream().anyMatch(Post::isEnabled))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
729 次 |
| 最近记录: |