3 changed files with 86 additions and 0 deletions
@ -0,0 +1,40 @@ |
|||||
|
// 泛型键值对类 Pair<K,V>
|
||||
|
public class Pair<K, V> { |
||||
|
// 私有成员变量
|
||||
|
private final K key; |
||||
|
private final 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; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 静态泛型方法:交换键值 |
||||
|
* 传入 Pair<A,B>,返回 交换后的 Pair<B,A> |
||||
|
*/ |
||||
|
public static <A, B> Pair<B, A> swap(Pair<A, B> pair) { |
||||
|
// 空值防护
|
||||
|
if (pair == null) { |
||||
|
return null; |
||||
|
} |
||||
|
// 新对象:把原值当key,原key当value
|
||||
|
return new Pair<>(pair.getValue(), pair.getKey()); |
||||
|
} |
||||
|
|
||||
|
// 重写toString,方便打印
|
||||
|
@Override |
||||
|
public String toString() { |
||||
|
return "[" + key + ", " + value + "]"; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,16 @@ |
|||||
|
public class PairTest { |
||||
|
public static void main(String[] args) { |
||||
|
// 1. 创建原始 Pair
|
||||
|
Pair<String, Integer> p1 = new Pair<>("身高", 180); |
||||
|
System.out.println("交换前:" + p1); |
||||
|
|
||||
|
// 2. 调用静态swap方法交换键值
|
||||
|
Pair<Integer, String> p2 = Pair.swap(p1); |
||||
|
System.out.println("交换后:" + p2); |
||||
|
|
||||
|
// 再测试一组
|
||||
|
Pair<Integer, Double> p3 = new Pair<>(10, 99.5); |
||||
|
Pair<Double, Integer> p4 = Pair.swap(p3); |
||||
|
System.out.println("另一组交换:" + p4); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,30 @@ |
|||||
|
对话主题 |
||||
|
Java 泛型类 Pair<K,V> 设计、编写,以及实现静态 swap 交换键值方法 |
||||
|
交互时间线 & 完整对话内容 |
||||
|
1. 用户提问 |
||||
|
设计泛型类 Pair<K,V>,怎么设计,具体应该怎么做 |
||||
|
2. AI 回复 |
||||
|
讲解泛型类 Pair<K,V> 设计思路: |
||||
|
泛型类语法 public class Pair<K,V> |
||||
|
定义私有泛型成员变量 key、value |
||||
|
提供构造方法、getter 方法 |
||||
|
给出完整可运行 Pair<K,V> 基础版代码 |
||||
|
提供测试类演示不同类型 Pair 的使用 |
||||
|
3. 用户接着提问 |
||||
|
如何让实现一个静态方法,交换 Pair 的键和值 |
||||
|
4. AI 回复 |
||||
|
讲解静态泛型 swap 方法核心原理: |
||||
|
静态方法需单独声明泛型 <A,B> |
||||
|
接收 Pair<A,B>,返回反转类型 Pair<B,A> |
||||
|
编写带静态 swap 方法的增强版 Pair 类 |
||||
|
给出测试代码,演示键值互换效果 |
||||
|
解释为什么不能用类上的 K、V,必须方法自定义泛型 |
||||
|
5. 用户指令 |
||||
|
完成 Pair<K,V> 及其 swap 方法 |
||||
|
6. AI 最终交付 |
||||
|
给出最终完整版不可变 Pair<K,V> 完整代码 + 测试类代码: |
||||
|
私有 final 成员变量 |
||||
|
构造方法、getter |
||||
|
静态泛型 swap 方法(做空判断、返回新交换对象) |
||||
|
重写 toString |
||||
|
配套测试类,多组类型测试交换效果 |
||||
Loading…
Reference in new issue