package org.dayatang.domain; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.dayatang.utils.Assert; /** * 键值对数据类型 * @author yyang (<a href="mailto:gdyangyu@gmail.com">gdyangyu@gmail.com</a>) */ public class KeyValue<K, V> { private K key; private V value; /** * 生成键值对 * @param key 键 * @param value 值 */ public KeyValue(K key, V value) { Assert.notNull(key, "Key must not be null!"); this.key = key; this.value = value; } /** * 获得键 * @return 键 */ public K getKey() { return key; } /** * 获得值 * @return 值 */ public V getValue() { return value; } @Override public int hashCode() { return new HashCodeBuilder(17, 31).append(key).append(value).toHashCode(); } @SuppressWarnings("unchecked") @Override public boolean equals(Object other) { if (this == other) { return true; } if (!(other instanceof KeyValue)) { return false; } KeyValue<K, V> that = (KeyValue<K, V>) other; return new EqualsBuilder().append(this.key, that.key) .append(this.value, that.value).isEquals(); } @Override public String toString() { return "KeyValue [key=" + key + ", value=" + value + "]"; } }