请使用Java写一个缓存功能
时间: 2023-09-06 16:13:30 浏览: 72
java手写本地缓存示例
好的,您需要一个缓存功能,下面是一个使用Java实现的简单缓存示例:
```
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
public class MyCache<K, V> {
private final Map<K, V> cacheMap = new HashMap<>();
private final long ttl;
public MyCache(long ttl) {
this.ttl = ttl;
}
public void put(K key, V value) {
cacheMap.put(key, value);
}
public Optional<V> get(K key) {
V value = cacheMap.get(key);
if (value == null) {
return Optional.empty();
} else {
long age = System.currentTimeMillis() - ((MyCacheEntry) value).getTimestamp();
if (age > ttl) {
cacheMap.remove(key);
return Optional.empty();
} else {
return Optional.of(((MyCacheEntry) value).getValue());
}
}
}
private class MyCacheEntry {
private final long timestamp;
private final V value;
MyCacheEntry(V value) {
this.value = value;
this.timestamp = System.currentTimeMillis();
}
long getTimestamp() {
return timestamp;
}
V getValue() {
return value;
}
}
}
```
这个示例是一个基于HashMap实现的缓存,可以存储任意类型的数据。缓存的过期时间可以通过构造函数中的ttl参数指定,单位是毫秒。当访问缓存时,如果缓存中没有对应的值或者值已经过期,则返回Optional.empty(),否则返回Optional.of(value)。
请注意,这只是一个简单的实现示例,实际使用中还需要根据具体情况进行优化和完善。
阅读全文