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(); int length = c.size();
if(length == 0) return false; if(length == 0) return false;
checkAddRange(index); checkAddRange(index);
Entry KEY_GENERIC_TYPE next = null; Entry KEY_GENERIC_TYPE next;
Entry KEY_GENERIC_TYPE prev = null; Entry KEY_GENERIC_TYPE prev;
if(index == size) prev = last; if(index == size) {
else if(index == 0) next = first; prev = last;
next = null;
}
else if(index == 0) {
next = first;
prev = null;
}
else { else {
next = getNode(index); next = getNode(index);
prev = next.prev; prev = next.prev;
@ -180,10 +186,16 @@ public class LINKED_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
int length = c.size(); int length = c.size();
if(length == 0) return false; if(length == 0) return false;
checkAddRange(index); checkAddRange(index);
Entry KEY_GENERIC_TYPE next = null; Entry KEY_GENERIC_TYPE next;
Entry KEY_GENERIC_TYPE prev = null; Entry KEY_GENERIC_TYPE prev;
if(index == size) prev = last; if(index == size) {
else if(index == 0) next = first; prev = last;
next = null;
}
else if(index == 0) {
next = first;
prev = null;
}
else { else {
next = getNode(index); next = getNode(index);
prev = next.prev; prev = next.prev;
@ -210,10 +222,16 @@ public class LINKED_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
int length = c.size(); int length = c.size();
if(length == 0) return false; if(length == 0) return false;
checkAddRange(index); checkAddRange(index);
Entry KEY_GENERIC_TYPE next = null; Entry KEY_GENERIC_TYPE next;
Entry KEY_GENERIC_TYPE prev = null; Entry KEY_GENERIC_TYPE prev;
if(index == size) prev = last; if(index == size) {
else if(index == 0) next = first; prev = last;
next = null;
}
else if(index == 0) {
next = first;
prev = null;
}
else { else {
next = getNode(index); next = getNode(index);
prev = next.prev; 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) { public void addElements(int from, KEY_TYPE[] a, int offset, int length) {
SanityChecks.checkArrayCapacity(a.length, offset, length); SanityChecks.checkArrayCapacity(a.length, offset, length);
checkAddRange(from); checkAddRange(from);
Entry KEY_GENERIC_TYPE next = null; Entry KEY_GENERIC_TYPE next;
Entry KEY_GENERIC_TYPE prev = null; Entry KEY_GENERIC_TYPE prev;
if(from == size) prev = last; if(from == size) {
else if(from == 0) next = first; prev = last;
next = null;
}
else if(from == 0) {
next = first;
prev = null;
}
else { else {
next = getNode(from); next = getNode(from);
prev = next.prev; 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(); KEY_TYPE key = entry.ENTRY_KEY();
if (!inRange(key)) return false; if (!inRange(key)) return false;
Node KEY_VALUE_GENERIC_TYPE node = map.findNode(key); 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); map.removeNode(node);
return true; 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(); KEY_TYPE key = entry.ENTRY_KEY();
if (!inRange(key)) return false; if (!inRange(key)) return false;
Node KEY_VALUE_GENERIC_TYPE node = map.findNode(key); 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); map.removeNode(node);
return true; 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(); public VALUE_TYPE LAST_ENTRY_VALUE();
@Override @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 @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 @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 #endif
/** /**