RFR: 8299444 java.util.Set.copyOf allocates needlessly for empty input collections [v2]

Attila Szegedi attila at openjdk.org
Sun Jan 22 15:23:03 UTC 2023


On Mon, 9 Jan 2023 08:33:09 GMT, Viktor Klang <duke at openjdk.org> wrote:

>> Currently Set.copyOf allocates both a HashSet and a new empty array when the input collection is empty.
>> 
>> This patch avoids allocating anything for the case where the parameter collection's isEmpty returns true.
>
> Viktor Klang has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - 8299444: java.util.Set.copyOf allocates needlessly for empty input collections
>    
>        Modifies ImmutableCollections.listCopy:
>        Introduces a check for isEmpty to avoid allocation in the case of an empty input collection.
>  - 8299444: java.util.Set.copyOf allocates needlessly for empty input collections
>    
>    Modifies Map.copyOf:
>    Introduces a check for isEmpty to avoid allocation in the case of an empty input Map.

src/java.base/share/classes/java/util/ImmutableCollections.java line 174:

> 172:             return List.of();
> 173:         } else {
> 174:             return (List<E>)List.of(coll.toArray()); // implicit nullcheck of coll

The comment is no longer relevant here, as it now happens on line 171.

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

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


More information about the core-libs-dev mailing list