RFR(m): 8177290 add copy factory methods for unmodifiable List, Set, Map

Stuart Marks stuart.marks at oracle.com
Tue Oct 31 23:49:56 UTC 2017


Updated webrev, based on comments from Brian and Roger:

     http://cr.openjdk.java.net/~smarks/reviews/8177290/webrev.2/

s'marks


On 10/30/17 3:50 PM, Stuart Marks wrote:
> (also includes 8184690: add Collectors for collecting into unmodifiable List, 
> Set, and Map)
> 
> Hi all,
> 
> Here's an updated webrev for this changeset; the previous review thread is here:
> 
>      
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2017-September/049261.html
> 
> This webrev includes the following:
> 
> * specification revisions to provide clearer definitions of "view" collections, 
> "unmodifiable" collections, and "unmodifiable views"
> 
> * new List.copyOf(), Set.copyOf(), and Map.copyOf() "copy factory" methods
> 
> * new Collectors.toUnmodifiableList, Set, and Map methods
> 
> * tests for the new API methods
> 
> I've added some assertions that require some independence between the source 
> collection (or map) and the result of the copyOf() method.
> 
> I've made a small but significant change to Set.copyOf compared to the previous 
> round. Previously, it specified that the first of any equal elements was 
> preserved. Now, it is explicitly unspecified which of any equals elements is 
> preserved. This is consistent with Set.addAll, Collectors.toSet, and the newly 
> added Collectors.toUnmodifiableSet, none of which specify which of duplicate 
> elements is preserved.
> 
> (The outlier here is Stream.distinct, which specifies that the first element of 
> any duplicates is preserved, if the stream is ordered.)
> 
> I've also made some minor wording/editorial changes in response to suggestions 
> from David Holmes and Roger Riggs. I've kept the wording changes that give 
> emphasis to "unmodifiable" over "immutable." The term "immutable" is 
> inextricably intertwined with "persistent" when it comes to data structures, and 
> I believe we'll be explaining this forever if Java's "immutable" means something 
> different from everybody else's.
> 
> Webrev:
> 
>      http://cr.openjdk.java.net/~smarks/reviews/8177290/webrev.1/
> 
> Bugs:
> 
>      https://bugs.openjdk.java.net/browse/JDK-8177290
>          add copy factory methods for unmodifiable List, Set, Map
> 
>      https://bugs.openjdk.java.net/browse/JDK-8184690
>          add Collectors for collecting into unmodifiable List, Set, and Map
> 
> Thanks,
> 
> s'marks


More information about the core-libs-dev mailing list