You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2013/06/09 20:35:24 UTC

svn commit: r1491258 - in /commons/proper/collections/trunk: RELEASE-NOTES.txt src/changes/changes.xml src/main/java/org/apache/commons/collections4/bag/AbstractMapBag.java

Author: tn
Date: Sun Jun  9 18:35:24 2013
New Revision: 1491258

URL: http://svn.apache.org/r1491258
Log:
[COLLECTIONS-472] Improved performance of AbstractMapBag#containsAll. Thanks to Adrian Nistor.

Modified:
    commons/proper/collections/trunk/RELEASE-NOTES.txt
    commons/proper/collections/trunk/src/changes/changes.xml
    commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/bag/AbstractMapBag.java

Modified: commons/proper/collections/trunk/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/RELEASE-NOTES.txt?rev=1491258&r1=1491257&r2=1491258&view=diff
==============================================================================
--- commons/proper/collections/trunk/RELEASE-NOTES.txt (original)
+++ commons/proper/collections/trunk/RELEASE-NOTES.txt Sun Jun  9 18:35:24 2013
@@ -182,6 +182,8 @@ Changed classes / methods
 Fixed Bugs
 ----------
 
+ o [COLLECTIONS-472] Improved performance of "AbstractMapBag#containsAll(Collection)" by returning immediately
+                     after a difference has been found. Thanks to Adrian Nistor.
  o [COLLECTIONS-461] Added additional clarification to javadoc of interface "Put" wrt return type of
                      "put(Object, Object)" method. Thanks to Matt Benson, sebb. 
  o [COLLECTIONS-447] Tree traversal with a TreeListIterator will not be affected anymore by the removal of an element directly after

Modified: commons/proper/collections/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/changes/changes.xml?rev=1491258&r1=1491257&r2=1491258&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/changes/changes.xml (original)
+++ commons/proper/collections/trunk/src/changes/changes.xml Sun Jun  9 18:35:24 2013
@@ -22,6 +22,10 @@
   <body>
 
   <release version="4.0" date="TBA" description="Next release">
+    <action issue="COLLECTIONS-472" dev="tn" type="fix" due-to="Adrian Nistor">
+      Improved performance of "AbstractMapBag#containsAll(Collection)" by returning immediately
+      after a difference has been found.
+    </action>  
     <action issue="COLLECTIONS-466" dev="tn" type="update">
       Replaced "Collection" with "Iterable" for method arguments where applicable.
     </action>  

Modified: commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/bag/AbstractMapBag.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/bag/AbstractMapBag.java?rev=1491258&r1=1491257&r2=1491258&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/bag/AbstractMapBag.java (original)
+++ commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/bag/AbstractMapBag.java Sun Jun  9 18:35:24 2013
@@ -147,14 +147,14 @@ public abstract class AbstractMapBag<E> 
      * @return <code>true</code> if the Bag contains all the collection
      */
     boolean containsAll(final Bag<?> other) {
-        boolean result = true;
         final Iterator<?> it = other.uniqueSet().iterator();
         while (it.hasNext()) {
             final Object current = it.next();
-            final boolean contains = getCount(current) >= other.getCount(current);
-            result = result && contains;
+            if (getCount(current) < other.getCount(current)) {
+                return false;
+            }
         }
-        return result;
+        return true;
     }
 
     //-----------------------------------------------------------------------