Eh bien, vous ne pouvez pas effectuer de recherche dans le flux tant que celui-ci est un ensemble inachevé de pipelines, c'est-à-dire d'opérations. Cela n'a aucun sens de le comparer avec un tel Stream.
La prochaine chose qui me semble étrange est probablement une faute de frappe. Je suppose que vous voulez chercher dans le stream1
au lieu de stream2
donc :
stream2 = stream2.filter(e -> stream1.contains(e));
Le seul moyen est de comparer un LongStream
avec une collection qui est optimisée pour une telle recherche. Je suppose que vous voulez continuer le stream1
après avoir effectué la recherche, alors effectuez ces étapes :
- Fermer
stream1
en le convertissant en un List<Long> list1
.
- Effectuez la recherche dans
stream2
en utilisant list1
de stream1
.
-
Ouvrir stream1
à nouveau pour un traitement ultérieur.
LongStream stream1 = ...
LongStream stream2 = ...
List<Long> list1 = stream1.boxed() // list1 from stream1 ..
.collect(Collectors.toList()); // .. which also closes stream1
stream2 = stream2.filter(list1::contains); // perform search
stream1 = list1.stream().mapToLong(l -> l); // open stream1 as LongStream
Edit : Utilisez Set
pour de meilleures performances comme @ fps suggère dans son responder .