这个问题在这里已经有答案了:
如何检查两个流是否不相交(3个答案)
上个月关门了。
我有两个java长流,我想从另一个流中删除一个流中的值。
LongStream stream 1 = ...
LongStream stream 2 = ...
stream2 = stream2.filter(e-> stream1.contains(e));
longstream没有contains方法,在这种情况下我不知道如何使用anymatch,因为要检查的值来自另一个流,并且不在变量或常量中。
这个问题在这里已经有答案了:
如何检查两个流是否不相交(3个答案)
上个月关门了。
我有两个java长流,我想从另一个流中删除一个流中的值。
LongStream stream 1 = ...
LongStream stream 2 = ...
stream2 = stream2.filter(e-> stream1.contains(e));
longstream没有contains方法,在这种情况下我不知道如何使用anymatch,因为要检查的值来自另一个流,并且不在变量或常量中。
3条答案
按热度按时间olhwl3o21#
嗯,只要流是一组未完成的管道,即操作,就不能在流中搜索。把它与这样的流相比较是没有意义的。
接下来我觉得奇怪的可能是打字错误。我猜你想在
stream1
而不是stream2
因此:唯一的办法就是比较
LongStream
为这种搜索而优化的集合。我猜你想继续stream1
执行搜索后,请执行以下步骤:关闭
stream1
将其转换为List<Long> list1
.在中执行搜索
stream2
使用list1
从stream1
.打开
stream1
再次进行进一步处理。编辑:使用
Set
正如@fps在他的回答中所建议的那样。v7pvogib2#
为什么要使用流呢?
集合具有
retainAll(Collection)
方法,那正是你需要的,如果我没弄错的话。。。(或
removeAll(Collection)
略高于……)yqkkidmi3#
你可以收集到
Set
使用contains
: