Browse Source

上传文件至 'W8-黄若妍-202506050310'

main
Huangruoyan 2 months ago
parent
commit
3cbea43cd7
  1. 4
      W8-黄若妍-202506050310/AI协助记录.txt
  2. 54
      W8-黄若妍-202506050310/Cache.java
  3. 48
      W8-黄若妍-202506050310/Pair.java

4
W8-黄若妍-202506050310/AI协助记录.txt

@ -0,0 +1,4 @@
我向 AI 提问了解了 Java 泛型擦除后,如何通过反射获取类、字段、方法声明中保留的泛型信息,也用 AI 审查了自己写的 Cache<K,V> 代码,检查了线程安全、空值处理和边界条件。同时,我也加深了对 “Java 泛型不支持基本类型” 的理解,明确了擦除机制和自动装箱的作用,为后续实验和代码优化理清了方向
线程安全:当前实现使用HashMap,不是线程安全的,如果需要多线程环境使用,建议改用ConcurrentHashMap。
缓存淘汰策略:目前的Cache没有过期或淘汰机制,实际使用中可以添加LRU、FIFO等策略。
空值处理:put(null, null)是允许的,如果业务不允许空值,可以在方法中添加校验。

54
W8-黄若妍-202506050310/Cache.java

@ -0,0 +1,54 @@
import java.util.HashMap;
import java.util.Map;
public class Cache<K, V> {
// 用Map存储缓存数据
private final Map<K, V> cacheMap;
public Cache() {
cacheMap = new HashMap<>();
}
// 存入缓存
public void put(K key, V value) {
cacheMap.put(key, value);
}
// 读取缓存
public V get(K key) {
return cacheMap.get(key);
}
// 判断是否包含key
public boolean containsKey(K key) {
return cacheMap.containsKey(key);
}
// 移除缓存
public void remove(K key) {
cacheMap.remove(key);
}
// 清空缓存
public void clear() {
cacheMap.clear();
}
// 获取缓存大小
public int size() {
return cacheMap.size();
}
// 测试
public static void main(String[] args) {
Cache<String, Integer> studentScoreCache = new Cache<>();
studentScoreCache.put("张三", 90);
studentScoreCache.put("李四", 85);
System.out.println("张三的分数: " + studentScoreCache.get("张三"));
System.out.println("缓存大小: " + studentScoreCache.size());
studentScoreCache.remove("李四");
System.out.println("移除李四后缓存大小: " + studentScoreCache.size());
}
}

48
W8-黄若妍-202506050310/Pair.java

@ -0,0 +1,48 @@
public class Pair<K, V> {
private K key;
private V value;
// 构造方法
public Pair(K key, V value) {
this.key = key;
this.value = value;
}
// 交换 key 和 value 的方法(注意:交换后类型会变为 Pair<V, K>)
public Pair<V, K> swap() {
return new Pair<>(this.value, this.key);
}
// Getter 和 Setter
public K getKey() {
return key;
}
public void setKey(K key) {
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
@Override
public String toString() {
return "Pair{" +
"key=" + key +
", value=" + value +
'}';
}
// 测试
public static void main(String[] args) {
Pair<String, Integer> pair = new Pair<>("age", 20);
System.out.println("原Pair: " + pair);
Pair<Integer, String> swappedPair = pair.swap();
System.out.println("交换后: " + swappedPair);
}
}
Loading…
Cancel
Save