Browse Source

上传文件至 'w8'

main
Jiayuheng 1 month ago
parent
commit
7ada46817e
  1. 103
      w8/Cache.java
  2. 47
      w8/Pair.java

103
w8/Cache.java

@ -0,0 +1,103 @@
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Cache<K, V> {
// 使用HashMap作为底层存储
private Map<K, V> 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<K> keySet() {
return cacheMap.keySet();
}
@Override
public String toString() {
return "Cache{" +
"size=" + cacheMap.size() +
", maxCapacity=" + maxCapacity +
", entries=" + cacheMap +
'}';
}
// 测试方法
public static void main(String[] args) {
// 创建缓存实例
Cache<String, Integer> 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);
}
}

47
w8/Pair.java

@ -0,0 +1,47 @@
public class Pair<K, V> {
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<V, K> 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<String, Integer> pair = new Pair<>("age", 25);
System.out.println("原始Pair: " + pair);
Pair<Integer, String> swapped = pair.swap();
System.out.println("交换后Pair: " + swapped);
}
}
Loading…
Cancel
Save