Fixed recent found bugs
-Fixed: addAll with non Specific Collections was crashing lists. -Fixed/Refactor: Clear and trim implementation was all over the place -Fixed: Wrappers toString/hashCode/equals function wasn't implemented -Added: Tests for addAll bug -Refactor: Did small code style cleanups as I was fixing bugs.
This commit is contained in:
+18
@@ -423,6 +423,24 @@ public class LINKED_CUSTOM_HASH_MAP KEY_VALUE_GENERIC_TYPE extends CUSTOM_HASH_M
|
||||
firstIndex = lastIndex = -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearAndTrim(int size) {
|
||||
int request = Math.max(minCapacity, HashUtil.nextPowerOfTwo((int)Math.ceil(size / loadFactor)));
|
||||
if(size >= request) {
|
||||
clear();
|
||||
return;
|
||||
}
|
||||
nullIndex = request;
|
||||
mask = request-1;
|
||||
maxFill = Math.min((int)Math.ceil(nullIndex * loadFactor), nullIndex - 1);
|
||||
keys = NEW_KEY_ARRAY(request + 1);
|
||||
values = NEW_VALUE_ARRAY(request + 1);
|
||||
links = new long[request + 1];
|
||||
firstIndex = lastIndex = -1;
|
||||
this.size = 0;
|
||||
containsNull = false;
|
||||
}
|
||||
|
||||
protected void moveToFirstIndex(int startPos) {
|
||||
if(size == 1 || firstIndex == startPos) return;
|
||||
if(lastIndex == startPos) {
|
||||
|
||||
+12
-2
@@ -534,8 +534,18 @@ public class CUSTOM_HASH_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VAL
|
||||
|
||||
@Override
|
||||
public void clearAndTrim(int size) {
|
||||
clear();
|
||||
trim(size);
|
||||
int request = Math.max(minCapacity, HashUtil.nextPowerOfTwo((int)Math.ceil(size / loadFactor)));
|
||||
if(size >= request) {
|
||||
clear();
|
||||
return;
|
||||
}
|
||||
nullIndex = request;
|
||||
mask = request-1;
|
||||
maxFill = Math.min((int)Math.ceil(nullIndex * loadFactor), nullIndex - 1);
|
||||
keys = NEW_KEY_ARRAY(request + 1);
|
||||
values = NEW_VALUE_ARRAY(request + 1);
|
||||
this.size = 0;
|
||||
containsNull = false;
|
||||
}
|
||||
|
||||
#if !TYPE_OBJECT
|
||||
|
||||
+18
@@ -403,6 +403,24 @@ public class LINKED_HASH_MAP KEY_VALUE_GENERIC_TYPE extends HASH_MAP KEY_VALUE_G
|
||||
firstIndex = lastIndex = -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearAndTrim(int size) {
|
||||
int request = Math.max(minCapacity, HashUtil.nextPowerOfTwo((int)Math.ceil(size / loadFactor)));
|
||||
if(size >= request) {
|
||||
clear();
|
||||
return;
|
||||
}
|
||||
nullIndex = request;
|
||||
mask = request-1;
|
||||
maxFill = Math.min((int)Math.ceil(nullIndex * loadFactor), nullIndex - 1);
|
||||
keys = NEW_KEY_ARRAY(request + 1);
|
||||
values = NEW_VALUE_ARRAY(request + 1);
|
||||
links = new long[request + 1];
|
||||
firstIndex = lastIndex = -1;
|
||||
this.size = 0;
|
||||
containsNull = false;
|
||||
}
|
||||
|
||||
protected void moveToFirstIndex(int startPos) {
|
||||
if(size == 1 || firstIndex == startPos) return;
|
||||
if(lastIndex == startPos) {
|
||||
|
||||
+12
-2
@@ -495,8 +495,18 @@ public class HASH_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_GENE
|
||||
|
||||
@Override
|
||||
public void clearAndTrim(int size) {
|
||||
clear();
|
||||
trim(size);
|
||||
int request = Math.max(minCapacity, HashUtil.nextPowerOfTwo((int)Math.ceil(size / loadFactor)));
|
||||
if(size >= request) {
|
||||
clear();
|
||||
return;
|
||||
}
|
||||
nullIndex = request;
|
||||
mask = request-1;
|
||||
maxFill = Math.min((int)Math.ceil(nullIndex * loadFactor), nullIndex - 1);
|
||||
keys = NEW_KEY_ARRAY(request + 1);
|
||||
values = NEW_VALUE_ARRAY(request + 1);
|
||||
this.size = 0;
|
||||
containsNull = false;
|
||||
}
|
||||
|
||||
#if !TYPE_OBJECT
|
||||
|
||||
+9
@@ -1,5 +1,6 @@
|
||||
package speiger.src.collections.PACKAGE.maps.impl.misc;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
#if VALUE_OBJECT
|
||||
@@ -193,6 +194,14 @@ public class ENUM_MAP KEY_ENUM_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE
|
||||
return valuesC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clear() {
|
||||
if(size == 0) return;
|
||||
size = 0;
|
||||
Arrays.fill(present, 0L);
|
||||
Arrays.fill(values, EMPTY_VALUE);
|
||||
}
|
||||
|
||||
protected void onNodeAdded(int index) {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user