Author: simonetripodi
Date: Wed Jul 13 16:08:00 2011
New Revision: 1146110

URL: http://svn.apache.org/viewvc?rev=1146110&view=rev
Log:
implemented contains/containsAll methods

Modified:
    
commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/collections/FibonacciHeap.java

Modified: 
commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/collections/FibonacciHeap.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/collections/FibonacciHeap.java?rev=1146110&r1=1146109&r2=1146110&view=diff
==============================================================================
--- 
commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/collections/FibonacciHeap.java
 (original)
+++ 
commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/collections/FibonacciHeap.java
 Wed Jul 13 16:08:00 2011
@@ -26,10 +26,12 @@ import static java.lang.Math.sqrt;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Comparator;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Queue;
+import java.util.Set;
 
 /**
  * A Fibonacci Heap implementation based on
@@ -42,6 +44,8 @@ public final class FibonacciHeap<E>
 
     private static final double LOG_PHI = log( ( 1 + sqrt( 5 ) ) / 2 );
 
+    private final Set<E> elementsIndex = new HashSet<E>();
+
     /**
      * The comparator, or null if priority queue uses elements'
      * natural ordering.
@@ -97,6 +101,8 @@ public final class FibonacciHeap<E>
         // mark[x] <- FALSE
         addNode( new FibonacciHeapNode<E>( e ) );
 
+        elementsIndex.add( e );
+
         // n[H] <- n[H] + 1
         size++;
         trees++;
@@ -128,7 +134,12 @@ public final class FibonacciHeap<E>
      */
     public boolean contains( Object o )
     {
-        return false;
+        if ( o == null )
+        {
+            return false;
+        }
+
+        return elementsIndex.contains( o );
     }
 
     /**
@@ -136,7 +147,20 @@ public final class FibonacciHeap<E>
      */
     public boolean containsAll( Collection<?> c )
     {
-        return false;
+        if ( c == null )
+        {
+            return false;
+        }
+
+        for ( Object o : c )
+        {
+            if ( !contains( o ) )
+            {
+                return false;
+            }
+        }
+
+        return true;
     }
 
     /**
@@ -301,7 +325,9 @@ public final class FibonacciHeap<E>
         size--;
         trees--;
 
-        return z.getElement();
+        E minimum = z.getElement();
+        elementsIndex.remove( minimum );
+        return minimum;
     }
 
     /**


Reply via email to