Can non terminal operation mark stream as ordered without actually sorting it ? (original) (raw)
Boaz Nahum boaznahum at gmail.com
Sun Apr 7 08:55:39 PDT 2013
- Previous message: Default methods in multiple parents
- Next message: Can non terminal operation mark stream as ordered without actually sorting it ?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi.
I have parallel unordered stream.
In some point I convert the stream to Pair<Integer, T> where *Integer *is index of element in stream. It is quite clear that each element is assigned arbitrary index, but once assigned I want it to be ordered by this index.
Sure I can do:
si.sequential().map((t)->new Pair<>(index.incrementAndGet(), t));
But I already learnt that I cant count on 'sequential()' ... :)
Or sort it: si.map((t)->new Pair<>(index.incrementAndGet(), t)).sorted((t1, t2)->t1.first.compareTo(t2.first));
But why pay the cost of sorting.
Or collect it to 'ordered' collection to protect 'sequential': si.sequential().map((t)->new Pair<>(index.incrementAndGet(), t)).collect(collector).stream();
here I pay the price of allocation Collection to hold all elements.
What i really need is somethings like this:
si.ordered().map((t)->new Pair<>(index.incrementAndGet(), t));
But unlike 'sequential()/parallel()' It cant be global.
Does making stream 'ordered' as better/worse performance than converting it to stream->collection->stream ?
I know it is rare use, But still I'm wondering.
Thanks Boaz
- Previous message: Default methods in multiple parents
- Next message: Can non terminal operation mark stream as ordered without actually sorting it ?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]