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

Stuart Marks stuart.marks at oracle.com
Mon Oct 30 22:50:05 UTC 2017


(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