Hi, I see that this is applicable to EmptyMap and EmptySet as well, here's an updated patch with clear() overridden for all 3 classes.
Thanks, Naufal On 23 May 2016 at 16:13, Paul Sandoz <[email protected]> wrote: > Hi Naufal, > > Thanks for looking at this. > > For us to accept your patch (no matter how small) you need to become a > contributor, which requires that you agree to the Oracle Contributor > Agreement (OCA), see: > > http://openjdk.java.net/contribute/ > > Thanks, > Paul. > > > On 22 May 2016, at 12:10, Mohamed Naufal <[email protected]> wrote: > > > > Hi, > > > > A call to clear() on Collections#EMPTY_LIST is currently redirected to > > AbstractList#clear(), which performs a bunch of checks and creates a > > ListItr object, all of which is unnecessary for an EmptyList. > > > > PFA a patch that implements a noop clear() for EmptyList. > > > > Thanks, > > Naufal > > <EmptyList_clear.diff> > >
# HG changeset patch # User Mohamed Naufal <[email protected]> # Date 1464424050 -19800 # Sat May 28 13:57:30 2016 +0530 # Node ID 78c139550bfce1c1795dc5d7820766b95de19d2c # Parent bbc19b6de175e355d008d6b968183bd3c4edce55 Collections: Implement a noop clear() for EmptyList, EmptyMap and EmptySet diff -r bbc19b6de175 -r 78c139550bfc src/java.base/share/classes/java/util/Collections.java --- a/src/java.base/share/classes/java/util/Collections.java Thu May 26 16:02:16 2016 +0000 +++ b/src/java.base/share/classes/java/util/Collections.java Sat May 28 13:57:30 2016 +0530 @@ -4324,6 +4324,7 @@ public int size() {return 0;} public boolean isEmpty() {return true;} + public void clear() {} public boolean contains(Object obj) {return false;} public boolean containsAll(Collection<?> c) { return c.isEmpty(); } @@ -4447,6 +4448,7 @@ public int size() {return 0;} public boolean isEmpty() {return true;} + public void clear() {} public boolean contains(Object obj) {return false;} public boolean containsAll(Collection<?> c) { return c.isEmpty(); } @@ -4582,6 +4584,7 @@ public int size() {return 0;} public boolean isEmpty() {return true;} + public void clear() {} public boolean containsKey(Object key) {return false;} public boolean containsValue(Object value) {return false;} public V get(Object key) {return null;}
