> When `Comparator.naturalOrder()` was explicitly supplied to a collection such 
> as `TreeSet`, or passed into the `sorted` method of a stream, the sorted 
> characteristic was not preserved, causing unnecessary buffering and duplicate 
> sorting.
> 
> Example:
> 
> 
> TreeSet<Integer> sortedSet = new TreeSet<>(Comparator.naturalOrder());
> sortedSet.add(1);
> sortedSet.add(2);
> // SortedOps.OfRef.opWrapSink is not a no-op
> sortedSet.stream().sorted().forEach(System.out::println);
> 
> or
> 
> TreeSet<Integer> sortedSet = new TreeSet<>();
> sortedSet.add(1);
> sortedSet.add(2);
> // SortedOps.OfRef.opWrapSink is not a no-op
> sortedSet.stream().sorted(Comparator.naturalOrder()).forEach(System.out::println);
> 
> 
> This PR updates `SortedOps.makeRef` and `StreamOpFlag.fromCharacteristics` to 
> handle the above cases and avoid the unnecessary sort step.

Patrick Strawderman has updated the pull request incrementally with one 
additional commit since the last revision:

  Fix StreamOpFlagsTest

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/28226/files
  - new: https://git.openjdk.org/jdk/pull/28226/files/3f339ad9..9452d747

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=28226&range=07
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28226&range=06-07

  Stats: 10 lines in 1 file changed: 0 ins; 0 del; 10 mod
  Patch: https://git.openjdk.org/jdk/pull/28226.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/28226/head:pull/28226

PR: https://git.openjdk.org/jdk/pull/28226

Reply via email to