You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

67 lines
1.6 KiB

/**
* 泛型 Pair 类 - 用于存储键值对
* @param <K> 键的类型
* @param <V> 值的类型
*/
public class Pair<K, V> {
private K key;
private V value;
// 构造方法
public Pair(K key, V value) {
this.key = key;
this.value = value;
}
// Getter 方法
public K getKey() {
return key;
}
public V getValue() {
return value;
}
// Setter 方法
public void setKey(K key) {
this.key = key;
}
public void setValue(V value) {
this.value = value;
}
/**
* swap 方法 - 交换当前 Pair 的 key 和 value
* 注意:只有当 K 和 V 类型相同时才能交换,否则返回新 Pair
*/
public Pair<V, K> swap() {
return new Pair<>(value, key);
}
/**
* 静态泛型方法 - 交换任意两个 Pair 对象
*/
public static <K, V> Pair<V, K> swap(Pair<K, V> pair) {
return new Pair<>(pair.getValue(), pair.getKey());
}
@Override
public String toString() {
return "Pair{" + "key=" + key + ", value=" + value + '}';
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Pair<?, ?> pair = (Pair<?, ?>) obj;
return java.util.Objects.equals(key, pair.key) &&
java.util.Objects.equals(value, pair.value);
}
@Override
public int hashCode() {
return java.util.Objects.hash(key, value);
}
}