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); } }