forked from Speiger/Primitive-Collections
80 lines
1.7 KiB
Plaintext
80 lines
1.7 KiB
Plaintext
package speiger.src.collections.PACKAGE.misc.pairs.impl;
|
|
|
|
import speiger.src.collections.PACKAGE.misc.pairs.PAIR;
|
|
|
|
/**
|
|
* Mutable Pair Implementation that
|
|
* @Type(T)
|
|
* @ValueType(V)
|
|
*/
|
|
public class IMMUTABLE_PAIR KEY_VALUE_GENERIC_TYPE implements PAIR KEY_VALUE_GENERIC_TYPE
|
|
{
|
|
protected final KEY_TYPE key;
|
|
protected final VALUE_TYPE value;
|
|
|
|
/**
|
|
* Default Constructor
|
|
*/
|
|
public IMMUTABLE_PAIR() {
|
|
this(EMPTY_KEY_VALUE, EMPTY_VALUE);
|
|
}
|
|
|
|
/**
|
|
* Key/Value Constructur
|
|
* @param key the key of the Pair
|
|
* @param value the value of the Pair
|
|
*/
|
|
public IMMUTABLE_PAIR(KEY_TYPE key, VALUE_TYPE value) {
|
|
this.key = key;
|
|
this.value = value;
|
|
}
|
|
|
|
@Override
|
|
public PAIR KEY_VALUE_GENERIC_TYPE KEY_ENTRY(KEY_TYPE key) {
|
|
return new IMMUTABLE_PAIRKV_BRACES(key, value);
|
|
}
|
|
|
|
@Override
|
|
public KEY_TYPE ENTRY_KEY() {
|
|
return key;
|
|
}
|
|
|
|
@Override
|
|
public PAIR KEY_VALUE_GENERIC_TYPE VALUE_ENTRY(VALUE_TYPE value) {
|
|
return new IMMUTABLE_PAIRKV_BRACES(key, value);
|
|
}
|
|
|
|
@Override
|
|
public VALUE_TYPE ENTRY_VALUE() {
|
|
return value;
|
|
}
|
|
|
|
@Override
|
|
public PAIR KEY_VALUE_GENERIC_TYPE set(KEY_TYPE key, VALUE_TYPE value) {
|
|
return new IMMUTABLE_PAIRKV_BRACES(key, value);
|
|
}
|
|
|
|
@Override
|
|
public PAIR KEY_VALUE_GENERIC_TYPE shallowCopy() {
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj) {
|
|
if(obj instanceof PAIR) {
|
|
PAIR KEY_VALUE_GENERIC_TYPE entry = (PAIR KEY_VALUE_GENERIC_TYPE)obj;
|
|
return KEY_EQUALS(key, entry.ENTRY_KEY()) && VALUE_EQUALS(value, entry.ENTRY_VALUE());
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return KEY_TO_HASH(key) ^ VALUE_TO_HASH(value);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return KEY_TO_STRING(key) + "->" + VALUE_TO_STRING(value);
|
|
}
|
|
} |