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