optimizations to IntPairMap.java
[sbp.git] / src / edu / berkeley / sbp / util / FastSet.java
index 581886e..289e5ec 100644 (file)
@@ -3,7 +3,7 @@
 package edu.berkeley.sbp.util;
 import java.util.*;
 
-public /*final*/ class FastSet<T> implements Iterator<T>, Iterable<T>, Visitable<T> {
+public final class FastSet<T> implements Iterator<T>, Iterable<T>, Visitable<T> {
 
     public static final int INITIAL_SIZE = 8;
 
@@ -42,11 +42,16 @@ public /*final*/ class FastSet<T> implements Iterator<T>, Iterable<T>, Visitable
             return;
         }
         boolean found = false;
-        for(int j=0; j<size; j++) {
-            if (array[j]==t) found = true;
-            if (found && j<size-1) array[j] = array[j+1];
-        }
-        if (found) size--;
+        int j;
+        for(j=0; j<size; j++)
+            if (array[j]==t) {
+                found = true;
+                break;
+            }
+        if (!found) return;
+        array[j] = array[size-1];
+        array[size-1] = null;
+        size--;
     }
 
     public <B,C> void visit(Invokable<T,B,C> ivbc, B b, C c) {