Pouvez-vous diviser un flux de données en deux volets?

J'ai un ensemble de données représentée par un Java 8 stream:

Stream<T> stream = ...;

Je peux voir comment filtrer pour obtenir un sous-ensemble aléatoire - par exemple

Random r = new Random();
PrimitiveIterator.OfInt coin = r.ints(0, 2).iterator();   
Stream<T> heads = stream.filter((x) -> (coin.nextInt() == 0));

Je peux aussi voir comment je pourrais réduire ce flux pour obtenir, par exemple, deux listes représentant les deux aléatoire moitiés de l'ensemble de données, puis activez-les dans le cours d'eau.
Mais, est-il un moyen direct pour générer deux flux à partir de la première? Quelque chose comme

(heads, tails) = stream.[some kind of split based on filter]

Merci pour toute la perspicacité.

InformationsquelleAutor user1148758 | 2013-11-12