Quellcode durchsuchen

FIX: IntHashMap.EntrySet#remove - use entry.value
FIX: IntHashMap.KeyIterator#remove - support

Ranides Atterwim vor 10 Jahren
Ursprung
Commit
e393ea4f5b

+ 12 - 3
assira/src/main/java/net/ranides/assira/collection/maps/IntHashMap.java

@@ -756,9 +756,13 @@ public class IntHashMap<V> extends IntMap<V> implements java.io.Serializable {
                 return false;
             }
             Map.Entry<Integer, V> entry = (Map.Entry<Integer, V>) object;
-            int prev = size;
-            IntHashMap.this.remove(entry.getKey());
-            return size != prev;
+            Integer k = entry.getKey();
+            V v = entry.getValue();
+            if (IntHashMap.this.containsKey(k) && CompareUtils.equals(v, IntHashMap.this.get(k))) {
+                IntHashMap.this.remove(k);
+                return true;
+            }
+            return false;
         }
 
         @Override
@@ -790,6 +794,11 @@ public class IntHashMap<V> extends IntMap<V> implements java.io.Serializable {
         public boolean hasNext() {
             return delegate.hasNext();
         }
+
+        @Override
+        public void remove() {
+            delegate.remove();
+        }
     }
 
     private final class KeySet extends IntSet {

+ 7 - 1
assira/src/test/java/net/ranides/assira/collection/maps/IntHashMapTest.java

@@ -7,9 +7,11 @@
 package net.ranides.assira.collection.maps;
 
 import java.util.Map;
+import net.ranides.assira.collection.mockup.IntValue;
 import static net.ranides.assira.collection.mockup.IntValueUtils.*;
 import net.ranides.assira.collection.suite.CollectionSuite;
 import net.ranides.assira.junit.QAssert;
+import net.ranides.assira.test.TMap;
 import org.junit.Test;
 import static org.junit.Assert.*;
 
@@ -19,9 +21,13 @@ import static org.junit.Assert.*;
  */
 public class IntHashMapTest {
     
+    private final TMap<Integer, String> $map = IntValue.MAP;
+    
     @Test
     public void testSuite() {
-//        assertTrue(CollectionSuite.HASH_SUITE.run(() -> new IntHashMap<>(32, 0.75f)));
+        CollectionSuite.SUITE
+            .param("map!", $map)
+            .run(() -> new IntHashMap<>(32, 0.75f));
     }
     
     @Test

+ 0 - 3
assira/src/test/java/net/ranides/assira/collection/suite/MapTester.java

@@ -14,9 +14,6 @@ import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.function.Supplier;
 import javax.annotation.Resource;
-//import net.ranides.assira.collection.mockup.ValueEnum;
-//import static net.ranides.assira.collection.mockup.ValueEnum.*;
-//import static net.ranides.assira.collection.mockup.TPointUtils.*;
 import net.ranides.assira.junit.QAssert;
 import net.ranides.assira.test.TMap;
 import net.ranides.assira.test.TMap.TItem;