On Thu, 3 Sep 2026 06:56:05 GMT, Tushar saini <[email protected]> wrote:

> ## Summary
> 
> [`JDK-8223933`](https://bugs.openjdk.org/browse/JDK-8223933)
> 
> `Stream.distinct()` must remove duplicates according to `Object.equals`. On 
> sorted streams it only compared each element to the previous one, which fails 
> when `compareTo` is inconsistent with `equals`, so duplicates can still be 
> emitted.
> 
> ## Fix
> Keep the sorted-path consecutive check, and also track emitted elements in a 
> `HashSet` so uniqueness always follows `equals`. Add a regression test for 
> the reported case and for equals-duplicates in different sort groups.
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

src/java.base/share/classes/java/util/stream/DistinctOps.java line 139:

> 137:                             seenNull = false;
> 138:                             lastSeen = null;
> 139:                             seen = new HashSet<>();

If possible, it would be good to pre-size this hashset when  an estimated size 
is available for the current stream. This would avoid the very expensive 
rehashing that occurs when needing to growing the array internal to the hashset.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/32670#discussion_r3924180146

Reply via email to