JDC*_*JDC 4 java sorting java-8 java-stream
我有一个类,可以指定一个可选的Comparator
.
由于Comparator
是可选的,我必须评估它的存在并执行相同的流代码,有sorted()
或没有:
if(comparator != null) {
[...].stream().map()[...].sorted(comparator)[...];
} else {
[...].stream().map()[...];
}
Run Code Online (Sandbox Code Playgroud)
问题:
如果没有代码重复,是否有更优雅的方法可以做到这一点?
注意:
默认Comparator
不是一个选项,我只想保持我正在流式传输的值的原始顺序.
此外,这些元素已经映射在分拣点,所以我不能以某种方式引用流的根目录,因为我没有原始的元素了.
你可以这样做:
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)
Run Code Online (Sandbox Code Playgroud)