我正在尝试使用基于某些谓词的Java8中的流来从集合中获取对象的集合
这是我尝试过的,但是这里有一些语法错误。:
Collection<object> objectCollectionNew = objectCollection.stream().filter(o -> objectCollection.stream().filter( x- > x.isTrue == o.isTrue));
所以基本上我想根据我的谓词从objectCollection
中获取一组对象。另外,我不确定如何将其收集到我的Collection<object>
。
.collect(Collectors.to ?? )
一些帮助将不胜感激。
答案 0 :(得分:1)
目前还不完全清楚你要做什么,但是如果你想找到你的集合的所有元素isTrue
等于集合中其他元素的isTrue
,你会这样做:
objectColelction.stream()
.filter(o -> objectColelction.stream().anyMatch(x -> x.isTrue == o.isTrue))
.collect(Collectors.toList());
答案 1 :(得分:0)
您似乎想要使用flatMap
:
Collection<object> objectCollectionNew = objectCollection.stream()
.flatMap(o -> objectCollection.stream().filter(x -> x.isTrue == o.isTrue))
.collect(Collectors.toList());
答案 2 :(得分:0)
我遇到了类似的问题,它在Eclipse语法分析器中看起来像是一个错误。我通过添加括号
解决了这个问题Collection<object> objectCollectionNew = objectCollection.stream()
.filter( x -> {return x.isTrue == o.isTrue;} )
.collect(Collectors.toList());
回答语法方面,而不是如何最好地解决过滤本身。