diff --git a/w8/.DS_Store b/w8/.DS_Store new file mode 100644 index 0000000..0311984 Binary files /dev/null and b/w8/.DS_Store differ diff --git a/w8/work8/.gitignore b/w8/work8/.gitignore new file mode 100644 index 0000000..13275f1 --- /dev/null +++ b/w8/work8/.gitignore @@ -0,0 +1,30 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ +.kotlin + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/w8/work8/.idea/.gitignore b/w8/work8/.idea/.gitignore new file mode 100644 index 0000000..b6b1ecf --- /dev/null +++ b/w8/work8/.idea/.gitignore @@ -0,0 +1,10 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 已忽略包含查询文件的默认文件夹 +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ diff --git a/w8/work8/.idea/misc.xml b/w8/work8/.idea/misc.xml new file mode 100644 index 0000000..6f29fee --- /dev/null +++ b/w8/work8/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/w8/work8/.idea/modules.xml b/w8/work8/.idea/modules.xml new file mode 100644 index 0000000..6e97e66 --- /dev/null +++ b/w8/work8/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/w8/work8/src/Cache.java b/w8/work8/src/Cache.java new file mode 100644 index 0000000..41e0707 --- /dev/null +++ b/w8/work8/src/Cache.java @@ -0,0 +1,58 @@ +import java.util.*; + +/** + * 泛型缓存类,支持基本的增删查操作 + * @param 键类型 + * @param 值类型 + */ +public class Cache { + private Map map; + private int maxSize; + + public Cache(int maxSize) { + this.maxSize = maxSize; + this.map = new LinkedHashMap(maxSize, 0.75f, true) { + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() > maxSize; + } + }; + } + + public void put(K key, V value) { + map.put(key, value); + } + + public V get(K key) { + return map.get(key); + } + + public boolean containsKey(K key) { + return map.containsKey(key); + } + + public V remove(K key) { + return map.remove(key); + } + + public int size() { + return map.size(); + } + + public void clear() { + map.clear(); + } + + public Set keySet() { + return map.keySet(); + } + + public Collection values() { + return map.values(); + } + + @Override + public String toString() { + return "Cache{" + map + "}"; + } +} \ No newline at end of file diff --git a/w8/work8/src/Pair.java b/w8/work8/src/Pair.java new file mode 100644 index 0000000..316064d --- /dev/null +++ b/w8/work8/src/Pair.java @@ -0,0 +1,41 @@ +/** + * 泛型 Pair 类,用于存储两个相关联的对象 + * @param 键类型 + * @param 值类型 + */ +public class Pair { + private K key; + private V value; + + public Pair(K key, V value) { + this.key = key; + this.value = value; + } + + public K getKey() { + return key; + } + + public V getValue() { + return value; + } + + /** + * 交换 key 和 value 的值 + * 注意:仅当 K 和 V 类型可相互赋值时有效 + */ + public void swap() { + // 使用 Object 临时存储,强制转换(假设类型兼容) + Object temp = key; + key = (K) value; + value = (V) temp; + } + + @Override + public String toString() { + return "Pair{" + + "key=" + key + + ", value=" + value + + '}'; + } +} \ No newline at end of file diff --git a/w8/work8/src/Test.java b/w8/work8/src/Test.java new file mode 100644 index 0000000..6f94589 --- /dev/null +++ b/w8/work8/src/Test.java @@ -0,0 +1,21 @@ +public class Test { + public static void main(String[] args) { + // 测试 Pair + Pair pair = new Pair<>("hello", 123); + System.out.println("原始: " + pair); + + pair.swap(); + System.out.println("交换后: " + pair); // 输出: Pair{key=123, value=hello} + + // 测试 Cache + Cache cache = new Cache<>(3); + cache.put("a", 1); + cache.put("b", 2); + cache.put("c", 3); + System.out.println("缓存内容: " + cache); + + System.out.println("获取 a: " + cache.get("a")); + cache.put("d", 4); // 超出容量,移除最久未使用的 "a" + System.out.println("添加 d 后: " + cache); + } +} \ No newline at end of file diff --git a/w8/work8/work8.iml b/w8/work8/work8.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/w8/work8/work8.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/w8/work8/泛型作业 b/w8/work8/泛型作业 new file mode 100644 index 0000000..0786f2c --- /dev/null +++ b/w8/work8/泛型作业 @@ -0,0 +1,38 @@ +/** + * 泛型 Pair 类,用于存储两个相关联的对象 + * @param 键类型 + * @param 值类型 + */ +public class Pair { + private K key; + private V value; + + public Pair(K key, V value) { + this.key = key; + this.value = value; + } + + public K getKey() { + return key; + } + + public V getValue() { + return value; + } + + /** + * 交换 key 和 value 的值(注意:仅适用于可互换类型的场景) + * 注意:如果 K 和 V 类型不同,交换后可能语义不一致 + */ + public void swap() { + // 使用 Object 临时存储,再交换 + Object temp = key; + key = value; + value = (V) temp; // 强转,需确保类型兼容 + } + + @Override + public String toString() { + return "(" + key + ", " + value + ")"; + } +}