> 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
