On Mon, 20 Feb 2023 13:15:03 GMT, Tingjun Yuan <d...@openjdk.org> wrote:

>> Currently, the two subclasses of `java.util.EnumSet` optimize bulk 
>> operations when the argument is also a `EnumSet`, but there is no such 
>> optimization for wrapper sets (returned by `Collections.unmodifiableSet`, 
>> `Collections.synchronizedSet`, etc.) and immutable sets (returned by 
>> `Set.of` methods) of `Enum`s.
>> 
>> This PR introduces optimization classes for these situations.  No public 
>> APIs are changed.
>
> Tingjun Yuan has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Optimize `EnumSet.copyOf` and `Set.copyOf`

src/java.base/share/classes/java/util/EnumSet.java line 186:

> 184:             } else {
> 185:                 while (i.hasNext())
> 186:                     result.add(i.next());

Can't we just use addAll in all cases?

src/java.base/share/classes/java/util/Set.java line 742:

> 740:         E e1 = it.next();
> 741:         if (!it.hasNext()) {
> 742:             return Set.of(e0, e1);

Bad change, doesn't handle e0.equals(e1), and this is getting beyond the 
original issue

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

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

Reply via email to