New Features.

-Added: removeOrDefault function
-Added: New functions into implementations
This commit is contained in:
2021-05-22 05:50:40 +02:00
parent a319e0136a
commit 7fcfecf308
9 changed files with 98 additions and 2 deletions
@@ -291,6 +291,13 @@ public class CUSTOM_HASH_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VAL
return removeIndex(slot);
}
@Override
public VALUE_TYPE REMOVE_KEYOrDefault(KEY_TYPE key, VALUE_TYPE defaultValue) {
int slot = findIndex(key);
if(slot < 0) return defaultValue;
return removeIndex(slot);
}
@Override
@Deprecated
public CLASS_VALUE_TYPE remove(Object key) {
@@ -262,6 +262,13 @@ public class HASH_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_GENE
return removeIndex(slot);
}
@Override
public VALUE_TYPE REMOVE_KEYOrDefault(KEY_TYPE key, VALUE_TYPE defaultValue) {
int slot = findIndex(key);
if(slot < 0) return defaultValue;
return removeIndex(slot);
}
@Override
@Deprecated
public CLASS_VALUE_TYPE remove(Object key) {
@@ -355,6 +355,15 @@ public class ARRAY_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_GEN
return value;
}
@Override
public VALUE_TYPE REMOVE_KEYOrDefault(KEY_TYPE key, VALUE_TYPE defaultValue) {
int index = findIndex(key);
if(index < 0) return defaultValue;
VALUE_TYPE value = values[index];
removeIndex(index);
return value;
}
#if !TYPE_OBJECT || !VALUE_OBJECT
@Override
public boolean remove(KEY_TYPE key, VALUE_TYPE value) {
@@ -777,6 +786,16 @@ public class ARRAY_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_GEN
return value;
}
@Override
public VALUE_TYPE REMOVE_KEYOrDefault(KEY_TYPE key, VALUE_TYPE defaultValue) {
int index = findIndex(key);
if(index < 0) return defaultValue;
VALUE_TYPE value = values[index];
removeIndex(index);
length--;
return value;
}
#if !TYPE_OBJECT || !VALUE_OBJECT
@Override
public boolean remove(KEY_TYPE key, VALUE_TYPE value) {
@@ -123,6 +123,16 @@ public class ENUM_MAP KEY_ENUM_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE
values[index] = EMPTY_VALUE;
return result;
}
@Override
public VALUE_TYPE remOrDefault(T key, VALUE_TYPE defaultValue) {
int index = key.ordinal();
if(!isSet(index)) return defaultValue;
clear(index);
VALUE_TYPE result = values[index];
values[index] = EMPTY_VALUE;
return result;
}
#if VALUE_OBJECT
@Override
@@ -425,6 +425,15 @@ public class AVL_TREE_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_
return value;
}
@Override
public VALUE_TYPE REMOVE_KEYOrDefault(KEY_TYPE key, VALUE_TYPE defaultValue) {
Entry KEY_VALUE_GENERIC_TYPE entry = findNode(key);
if(entry == null) return defaultValue;
VALUE_TYPE value = entry.value;
removeNode(entry);
return value;
}
#if TYPE_OBJECT && VALUE_OBJECT
@Override
public boolean remove(Object key, Object value) {
@@ -1117,6 +1126,11 @@ public class AVL_TREE_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_
return inRange(key) ? m.REMOVE_KEY(key) : getDefaultReturnValue();
}
@Override
public VALUE_TYPE REMOVE_KEYOrDefault(KEY_TYPE key, VALUE_TYPE defaultValue) {
return inRange(key) ? m.REMOVE_KEY(key) : defaultValue;
}
#if TYPE_OBJECT && VALUE_OBJECT
@Override
public boolean remove(Object key, Object value) {
@@ -424,6 +424,15 @@ public class RB_TREE_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_G
return value;
}
@Override
public VALUE_TYPE REMOVE_KEYOrDefault(KEY_TYPE key, VALUE_TYPE defaultValue) {
Entry KEY_VALUE_GENERIC_TYPE entry = findNode(key);
if(entry == null) return defaultValue;
VALUE_TYPE value = entry.value;
removeNode(entry);
return value;
}
#if TYPE_OBJECT && VALUE_OBJECT
@Override
public boolean remove(Object key, Object value) {
@@ -1174,6 +1183,11 @@ public class RB_TREE_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_G
return inRange(key) ? m.REMOVE_KEY(key) : getDefaultReturnValue();
}
@Override
public VALUE_TYPE REMOVE_KEYOrDefault(KEY_TYPE key, VALUE_TYPE defaultValue) {
return inRange(key) ? m.REMOVE_KEY(key) : defaultValue;
}
#if TYPE_OBJECT && VALUE_OBJECT
@Override
public boolean remove(Object key, Object value) {