From 7ada46817e165a7140e57e43506f319c8fd58836 Mon Sep 17 00:00:00 2001 From: Jiayuheng Date: Thu, 7 May 2026 14:28:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'w8'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- w8/Cache.java | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++ w8/Pair.java | 47 +++++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 w8/Cache.java create mode 100644 w8/Pair.java diff --git a/w8/Cache.java b/w8/Cache.java new file mode 100644 index 0000000..9e20d1b --- /dev/null +++ b/w8/Cache.java @@ -0,0 +1,103 @@ +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +public class Cache { + // 使用HashMap作为底层存储 + private Map cacheMap; + + // 缓存最大容量(可选) + private int maxCapacity; + + public Cache() { + this.cacheMap = new HashMap<>(); + this.maxCapacity = Integer.MAX_VALUE; + } + + public Cache(int maxCapacity) { + this.cacheMap = new HashMap<>(); + this.maxCapacity = maxCapacity; + } + + // 添加缓存项 + public void put(K key, V value) { + // 如果达到最大容量,可以实现淘汰策略(这里简单处理) + if (cacheMap.size() >= maxCapacity && maxCapacity > 0) { + // 简单策略:移除第一个元素 + K firstKey = cacheMap.keySet().iterator().next(); + cacheMap.remove(firstKey); + System.out.println("缓存已满,移除了key: " + firstKey); + } + cacheMap.put(key, value); + } + + // 获取缓存项 + public V get(K key) { + return cacheMap.get(key); + } + + // 删除缓存项 + public V remove(K key) { + return cacheMap.remove(key); + } + + // 检查缓存项是否存在 + public boolean containsKey(K key) { + return cacheMap.containsKey(key); + } + + // 获取缓存大小 + public int size() { + return cacheMap.size(); + } + + // 清空缓存 + public void clear() { + cacheMap.clear(); + } + + // 获取所有key的集合 + public Set keySet() { + return cacheMap.keySet(); + } + + @Override + public String toString() { + return "Cache{" + + "size=" + cacheMap.size() + + ", maxCapacity=" + maxCapacity + + ", entries=" + cacheMap + + '}'; + } + + // 测试方法 + public static void main(String[] args) { + // 创建缓存实例 + Cache cache = new Cache<>(3); + + // 添加缓存项 + cache.put("a", 1); + cache.put("b", 2); + cache.put("c", 3); + System.out.println("添加三个元素后: " + cache); + + // 获取缓存项 + System.out.println("获取key='b': " + cache.get("b")); + + // 添加第四个元素(触发淘汰) + cache.put("d", 4); + System.out.println("添加第四个元素后: " + cache); + + // 检查缓存项是否存在 + System.out.println("key='a'是否存在: " + cache.containsKey("a")); + System.out.println("key='d'是否存在: " + cache.containsKey("d")); + + // 删除缓存项 + cache.remove("c"); + System.out.println("删除key='c'后: " + cache); + + // 清空缓存 + cache.clear(); + System.out.println("清空缓存后: " + cache); + } +} \ No newline at end of file diff --git a/w8/Pair.java b/w8/Pair.java new file mode 100644 index 0000000..75dd77f --- /dev/null +++ b/w8/Pair.java @@ -0,0 +1,47 @@ +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; + } + + public void setKey(K key) { + this.key = key; + } + + public void setValue(V value) { + this.value = value; + } + + // swap方法:交换key和value的位置 + public Pair swap() { + return new Pair<>(this.value, this.key); + } + + @Override + public String toString() { + return "Pair{" + + "key=" + key + + ", value=" + value + + '}'; + } + + // 测试方法 + public static void main(String[] args) { + Pair pair = new Pair<>("age", 25); + System.out.println("原始Pair: " + pair); + + Pair swapped = pair.swap(); + System.out.println("交换后Pair: " + swapped); + } +} \ No newline at end of file