Fixed a couple bugs.

-Fixed: TreeMap.subMap().entrySet().remove() wouldn't check primitives properly.
-Fixed: SortedMap.sub/tail/headMap were looping into themselves.
-Changed: LinkedList.addBulk variable definition was triggering a false positive.
This commit is contained in:
Speiger 2022-05-17 07:59:57 +02:00
parent 4bded1af80
commit 31b34f5de1
4 changed files with 45 additions and 21 deletions

View File

@ -152,10 +152,16 @@ public class LINKED_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
int length = c.size();
if(length == 0) return false;
checkAddRange(index);
Entry KEY_GENERIC_TYPE next = null;
Entry KEY_GENERIC_TYPE prev = null;
if(index == size) prev = last;
else if(index == 0) next = first;
Entry KEY_GENERIC_TYPE next;
Entry KEY_GENERIC_TYPE prev;
if(index == size) {
prev = last;
next = null;
}
else if(index == 0) {
next = first;
prev = null;
}
else {
next = getNode(index);
prev = next.prev;
@ -180,10 +186,16 @@ public class LINKED_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
int length = c.size();
if(length == 0) return false;
checkAddRange(index);
Entry KEY_GENERIC_TYPE next = null;
Entry KEY_GENERIC_TYPE prev = null;
if(index == size) prev = last;
else if(index == 0) next = first;
Entry KEY_GENERIC_TYPE next;
Entry KEY_GENERIC_TYPE prev;
if(index == size) {
prev = last;
next = null;
}
else if(index == 0) {
next = first;
prev = null;
}
else {
next = getNode(index);
prev = next.prev;
@ -210,10 +222,16 @@ public class LINKED_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
int length = c.size();
if(length == 0) return false;
checkAddRange(index);
Entry KEY_GENERIC_TYPE next = null;
Entry KEY_GENERIC_TYPE prev = null;
if(index == size) prev = last;
else if(index == 0) next = first;
Entry KEY_GENERIC_TYPE next;
Entry KEY_GENERIC_TYPE prev;
if(index == size) {
prev = last;
next = null;
}
else if(index == 0) {
next = first;
prev = null;
}
else {
next = getNode(index);
prev = next.prev;
@ -260,10 +278,16 @@ public class LINKED_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
public void addElements(int from, KEY_TYPE[] a, int offset, int length) {
SanityChecks.checkArrayCapacity(a.length, offset, length);
checkAddRange(from);
Entry KEY_GENERIC_TYPE next = null;
Entry KEY_GENERIC_TYPE prev = null;
if(from == size) prev = last;
else if(from == 0) next = first;
Entry KEY_GENERIC_TYPE next;
Entry KEY_GENERIC_TYPE prev;
if(from == size) {
prev = last;
next = null;
}
else if(from == 0) {
next = first;
prev = null;
}
else {
next = getNode(from);
prev = next.prev;

View File

@ -1778,7 +1778,7 @@ public class AVL_TREE_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_
KEY_TYPE key = entry.ENTRY_KEY();
if (!inRange(key)) return false;
Node KEY_VALUE_GENERIC_TYPE node = map.findNode(key);
if (node != null && VALUE_EQUALS(node.getValue(), entry.getValue())) {
if (node != null && VALUE_EQUALS(node.ENTRY_VALUE(), entry.ENTRY_VALUE())) {
map.removeNode(node);
return true;
}

View File

@ -1835,7 +1835,7 @@ public class RB_TREE_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_G
KEY_TYPE key = entry.ENTRY_KEY();
if (!inRange(key)) return false;
Node KEY_VALUE_GENERIC_TYPE node = map.findNode(key);
if (node != null && VALUE_EQUALS(node.getValue(), entry.getValue())) {
if (node != null && VALUE_EQUALS(node.ENTRY_VALUE(), entry.ENTRY_VALUE())) {
map.removeNode(node);
return true;
}

View File

@ -155,11 +155,11 @@ public interface SORTED_MAP KEY_VALUE_GENERIC_TYPE extends SortedMap<CLASS_TYPE,
public VALUE_TYPE LAST_ENTRY_VALUE();
@Override
public default SORTED_MAP KEY_VALUE_GENERIC_TYPE subMap(CLASS_TYPE fromKey, CLASS_TYPE toKey) { return subMap(OBJ_TO_KEY(fromKey), OBJ_TO_KEY(toKey)); }
public SORTED_MAP KEY_VALUE_GENERIC_TYPE subMap(CLASS_TYPE fromKey, CLASS_TYPE toKey);
@Override
public default SORTED_MAP KEY_VALUE_GENERIC_TYPE headMap(CLASS_TYPE toKey) { return headMap(OBJ_TO_KEY(toKey)); }
public SORTED_MAP KEY_VALUE_GENERIC_TYPE headMap(CLASS_TYPE toKey);
@Override
public default SORTED_MAP KEY_VALUE_GENERIC_TYPE tailMap(CLASS_TYPE fromKey) { return tailMap(OBJ_TO_KEY(fromKey)); }
public SORTED_MAP KEY_VALUE_GENERIC_TYPE tailMap(CLASS_TYPE fromKey);
#endif
/**