< prev index next >

src/java.base/share/classes/java/util/AbstractCollection.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) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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

@@ -314,10 +314,13 @@
      * This implementation iterates over the specified collection,
      * checking each element returned by the iterator in turn to see
      * if it's contained in this collection.  If all elements are so
      * contained {@code true} is returned, otherwise {@code false}.
      *
+     * @implNote
+     * {@inheritDoc}
+     *
      * @throws ClassCastException            {@inheritDoc}
      * @throws NullPointerException          {@inheritDoc}
      * @see #contains(Object)
      */
     public boolean containsAll(Collection<?> c) {

@@ -356,21 +359,25 @@
 
     /**
      * {@inheritDoc}
      *
      * @implSpec
-     * This implementation iterates over this collection, checking each
-     * element returned by the iterator in turn to see if it's contained
-     * in the specified collection.  If it's so contained, it's removed from
-     * this collection with the iterator's {@code remove} method.
+     * This implementation iterates over each element of this collection by
+     * obtaining an iterator from the {@code iterator} method. Each element
+     * is passed to the {@code contains} method of the specified collection.
+     * If {@code contains} returns {@code true}, the element is removed from this
+     * collection with the iterator's {@code remove} method.
      *
      * <p>Note that this implementation will throw an
      * {@code UnsupportedOperationException} if the iterator returned by the
      * {@code iterator} method does not implement the {@code remove} method
      * and this collection contains one or more elements in common with the
      * specified collection.
      *
+     * @implNote
+     * {@inheritDoc}
+     *
      * @throws UnsupportedOperationException {@inheritDoc}
      * @throws ClassCastException            {@inheritDoc}
      * @throws NullPointerException          {@inheritDoc}
      *
      * @see #remove(Object)

@@ -391,21 +398,25 @@
 
     /**
      * {@inheritDoc}
      *
      * @implSpec
-     * This implementation iterates over this collection, checking each
-     * element returned by the iterator in turn to see if it's contained
-     * in the specified collection.  If it's not so contained, it's removed
-     * from this collection with the iterator's {@code remove} method.
+     * This implementation iterates over each element of this collection by
+     * obtaining an iterator from the {@code iterator} method. Each element
+     * is passed to the {@code contains} method of the specified collection.
+     * If {@code contains} returns {@code false}, the element is removed from
+     * this collection with the iterator's {@code remove} method.
      *
      * <p>Note that this implementation will throw an
      * {@code UnsupportedOperationException} if the iterator returned by the
      * {@code iterator} method does not implement the {@code remove} method
      * and this collection contains one or more elements not present in the
      * specified collection.
      *
+     * @implNote
+     * {@inheritDoc}
+     *
      * @throws UnsupportedOperationException {@inheritDoc}
      * @throws ClassCastException            {@inheritDoc}
      * @throws NullPointerException          {@inheritDoc}
      *
      * @see #remove(Object)
< prev index next >