JDC JDC - 3 years ago 151
Java Question

Java Streams - Sort if Comparator exists

I have a class where optionally a

can be specified.

Since the
is optional, I have to evaluate its presence and execute the same stream code, either with
or without:

if(comparator != null) {
} else {


Is there a more elegant way to do this without the code duplication?


A default
is not an option, I just want to keep the original order of the values I am streaming.

Besides, the elements are already mapped at the point of sorting, so I can not somehow reference the root list of the stream, as I do not have the original elements anymore.

Answer Source

You can do something like this:

Stream<Something> stream = [...].stream().map()[...]; // preliminary processing
if(comparator != null) {
    stream = stream.sorted(comparator); // optional sorting
stream... // resumed processing, which ends in some terminal operation (such as collect)
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download