New Features.
-Added: removeOrDefault function -Added: New functions into implementations
This commit is contained in:
+1
-1
@@ -180,7 +180,7 @@ public abstract class ABSTRACT_MAP KEY_VALUE_GENERIC_TYPE extends AbstractMap<CL
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public VALUE_TYPE COMPUTE_IF_PRESENT(KEY_TYPE key, UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE mappingFunction) {
|
||||
Objects.requireNonNull(mappingFunction);
|
||||
|
||||
+7
@@ -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) {
|
||||
|
||||
+7
@@ -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) {
|
||||
|
||||
+19
@@ -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) {
|
||||
|
||||
+10
@@ -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
|
||||
|
||||
+14
@@ -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) {
|
||||
|
||||
+14
@@ -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) {
|
||||
|
||||
+9
-1
@@ -199,8 +199,16 @@ public interface MAP KEY_VALUE_GENERIC_TYPE extends Map<CLASS_TYPE, CLASS_VALUE_
|
||||
return key instanceof CLASS_TYPE && value instanceof CLASS_VALUE_TYPE && remove(CLASS_TO_KEY(key), CLASS_TO_VALUE(value));
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/**
|
||||
* Type-Specific Remove function with a default return value if wanted.
|
||||
* @see Map#remove(Object, Object)
|
||||
* @param key the element that should be removed
|
||||
* @param defaultValue the value that should be returned if the entry doesn't exist
|
||||
* @return the value that was removed or default value
|
||||
*/
|
||||
public VALUE_TYPE REMOVE_KEYOrDefault(KEY_TYPE key, VALUE_TYPE defaultValue);
|
||||
/**
|
||||
* A Type Specific replace method to replace an existing value
|
||||
* @param key the element that should be searched for
|
||||
|
||||
Reference in New Issue
Block a user