please review draft JEP: Convenience Factory Methods for Collections

Remi Forax forax at univ-mlv.fr
Thu Jul 17 01:03:09 UTC 2014


On 07/17/2014 02:46 AM, Stuart Marks wrote:
> Hi all,
>
> Please review this draft JEP for Convenience Factory Methods for 
> Collections:
>
>     https://bugs.openjdk.java.net/browse/JDK-8048330
>
> Brief background: several times over the years there have been 
> proposals to add "collection literals" to the language. The most 
> recent round of this was in regard to JEP 186, a research JEP to 
> explore this topic. That effort was concluded by Brian Goetz, as 
> summarized in this email:
>
> http://mail.openjdk.java.net/pipermail/lambda-dev/2014-March/011938.html
>
> Essentially, the idea of adding collection literals to the language 
> was set aside in favor of adding some library APIs, not entirely 
> unlike collection literals, that make it more convenient to create 
> collections. That's what this proposal is.
>
> Share and enjoy,
>
> s'marks
>

Hi Stuart,

I think you should say something about the serialization of the 
immutable collections
because implementation details like the real class name can leak through 
this channel.
That's why, by example, java.util.Collections.ArrayList (the internal 
class of Collections) was never renamed.

Also 5 key/value pairs seems a little bit limited IMO, 7 or 8 will be 
better but I suppose you want to use the fact
that because the number of pairs is really small, the algorithm can do a 
linear probe.
I think you should add a version that takes two arrays of the same size 
(for an (almost) unlimited number of pairs)
with an implementation that clone the two arrays (at least until value 
type are implemented).

I think you should also add a default method toImmutable to Set, List 
and Map, so one  can use HashSet, ArrayList
and HashMap as builder for their immutable counterparts. Otherwise, the 
stream integration will be difficult,
i.e. the implementation of Collectors.toImmutableList/Set/Map.

cheers,
Rémi




More information about the core-libs-dev mailing list