< prev index next >

src/java.base/share/classes/java/util/IdentityHashMap.java

Print this page
rev 54827 : 6394757: AbstractSet.removeAll semantics are surprisingly dependent on relative sizes
Reviewed-by: XXX

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -985,26 +985,10 @@
         public boolean remove(Object o) {
             int oldSize = size;
             IdentityHashMap.this.remove(o);
             return size != oldSize;
         }
-        /*
-         * Must revert from AbstractSet's impl to AbstractCollection's, as
-         * the former contains an optimization that results in incorrect
-         * behavior when c is a smaller "normal" (non-identity-based) Set.
-         */
-        public boolean removeAll(Collection<?> c) {
-            Objects.requireNonNull(c);
-            boolean modified = false;
-            for (Iterator<K> i = iterator(); i.hasNext(); ) {
-                if (c.contains(i.next())) {
-                    i.remove();
-                    modified = true;
-                }
-            }
-            return modified;
-        }
         public void clear() {
             IdentityHashMap.this.clear();
         }
         public int hashCode() {
             int result = 0;

@@ -1202,27 +1186,10 @@
             return size;
         }
         public void clear() {
             IdentityHashMap.this.clear();
         }
-        /*
-         * Must revert from AbstractSet's impl to AbstractCollection's, as
-         * the former contains an optimization that results in incorrect
-         * behavior when c is a smaller "normal" (non-identity-based) Set.
-         */
-        public boolean removeAll(Collection<?> c) {
-            Objects.requireNonNull(c);
-            boolean modified = false;
-            for (Iterator<Map.Entry<K,V>> i = iterator(); i.hasNext(); ) {
-                if (c.contains(i.next())) {
-                    i.remove();
-                    modified = true;
-                }
-            }
-            return modified;
-        }
-
         public Object[] toArray() {
             return toArray(new Object[0]);
         }
 
         @SuppressWarnings("unchecked")
< prev index next >