Ranides Atterwim 4 vuotta sitten
vanhempi
commit
54ed324f4b

+ 23 - 1
assira.commons/src/main/java/net/ranides/assira/collection/lookups/ArrayLookup.java

@@ -9,11 +9,13 @@ package net.ranides.assira.collection.lookups;
 
 import net.ranides.assira.collection.IntCollection;
 import net.ranides.assira.collection.arrays.ArrayAllocator;
+import net.ranides.assira.collection.arrays.ArrayUtils;
 import net.ranides.assira.collection.arrays.NativeArraySort;
 import net.ranides.assira.collection.iterators.IntListIterator;
 import net.ranides.assira.collection.iterators.RandomAccessIntIterator;
 import net.ranides.assira.collection.iterators.RandomAccessIterator;
 import net.ranides.assira.collection.lists.AIntList;
+import net.ranides.assira.collection.maps.BlockMap;
 import net.ranides.assira.generic.CompareUtils;
 
 import java.util.AbstractSet;
@@ -29,7 +31,7 @@ import java.util.SortedMap;
  *
  * @author Ranides Atterwim {@literal <ranides@gmail.com>}
  */
-public class ArrayLookup<K> extends ALookup<K> {
+public class ArrayLookup<K> extends ALookup<K> implements BlockMap<K,Integer> {
 
     private static final long serialVersionUID = 1L;
 
@@ -170,6 +172,26 @@ public class ArrayLookup<K> extends ALookup<K> {
         array[b] = t;
     }
 
+    @Override
+    public int capacity() {
+        return keys.length;
+    }
+
+    @Override
+    public boolean trim() {
+        return trim(keys.length);
+    }
+
+    @Override
+    public boolean trim(int n) {
+        if(n > capacity()) {
+            return false;
+        }
+        this.keys = ArrayUtils.slice(keys, 0, n);
+        this.vars = ArrayUtils.slice(vars, 0, n);
+        return true;
+    }
+
     @Override
     public Set<LookupEntry<K>> fastEntrySet() {
         return new AbstractSet<LookupEntry<K>>() {

+ 22 - 1
assira.commons/src/main/java/net/ranides/assira/collection/maps/IntArrayMap.java

@@ -10,6 +10,7 @@ package net.ranides.assira.collection.maps;
 import net.ranides.assira.collection.IntComparator;
 import net.ranides.assira.collection.arrays.ArrayAllocator;
 import net.ranides.assira.collection.arrays.ArraySearch;
+import net.ranides.assira.collection.arrays.ArrayUtils;
 import net.ranides.assira.collection.arrays.NativeArraySort;
 import net.ranides.assira.collection.iterators.IntIterator;
 import net.ranides.assira.collection.iterators.RandomAccessIntIterator;
@@ -31,7 +32,7 @@ import java.util.Set;
  *
  * @author Ranides Atterwim {@literal <ranides@gmail.com>}
  */
-public class IntArrayMap<V> extends AIntMap<V> {
+public class IntArrayMap<V> extends AIntMap<V> implements BlockMap<Integer, V> {
 
     private static final long serialVersionUID = 1L;
 
@@ -72,6 +73,26 @@ public class IntArrayMap<V> extends AIntMap<V> {
         array[b] = t;
     }
 
+    @Override
+    public int capacity() {
+        return keys.length;
+    }
+
+    @Override
+    public boolean trim() {
+        return trim(keys.length);
+    }
+
+    @Override
+    public boolean trim(int n) {
+        if(n > capacity()) {
+            return false;
+        }
+        this.keys = ArrayUtils.slice(keys, 0, n);
+        this.vars = ArrayUtils.slice(vars, 0, n);
+        return true;
+    }
+
     @Override
     public Set<IntEntry<V>> fastEntrySet() {
         return new AbstractSet<IntEntry<V>>() {

+ 22 - 1
assira.core/src/main/java/net/ranides/assira/collection/maps/ArrayMap.java

@@ -8,6 +8,7 @@
 package net.ranides.assira.collection.maps;
 
 import net.ranides.assira.collection.arrays.ArrayAllocator;
+import net.ranides.assira.collection.arrays.ArrayUtils;
 import net.ranides.assira.collection.arrays.NativeArraySort;
 import net.ranides.assira.collection.iterators.RandomAccessIterator;
 import net.ranides.assira.generic.CompareUtils;
@@ -20,7 +21,7 @@ import java.util.*;
  *
  * @author Ranides Atterwim {@literal <ranides@gmail.com>}
  */
-public class ArrayMap<K,V> extends AMap<K, V> {
+public class ArrayMap<K,V> extends AMap<K, V> implements BlockMap<K,V> {
 
     private static final long serialVersionUID = 1L;
     
@@ -100,6 +101,26 @@ public class ArrayMap<K,V> extends AMap<K, V> {
         array[b] = t;
     }
 
+    @Override
+    public int capacity() {
+        return keys.length;
+    }
+
+    @Override
+    public boolean trim() {
+        return trim(keys.length);
+    }
+
+    @Override
+    public boolean trim(int n) {
+        if(n > capacity()) {
+            return false;
+        }
+        this.keys = ArrayUtils.slice(keys, 0, n);
+        this.vars = ArrayUtils.slice(vars, 0, n);
+        return true;
+    }
+
     @Override
     public Set<Entry<K, V>> entrySet() {
         return new AbstractSet<Entry<K, V>>() {