通用缓存,支持优先级和生存时间
C#
Hard
generics
任务 «通用缓存,支持优先级和生存时间»
实现一个泛型类 Cache<TKey, TValue>,该类存储具有指定生存时间(TimeToLive)和优先级(int)的元素。添加元素时,如果缓存超过最大大小,则删除优先级最低的元素,若优先级相同,则删除最旧的元素。当 TimeToLive 到期后,元素被视为过期,在请求时不会返回。方法:Add(TKey key, TValue value, int priority) — 添加或更新元素;TryGet(TKey key, out TValue value) — 如果键存在且未过期则返回 true,否则返回 false;RemoveExpired() — 删除所有过期元素。使用锁实现线程安全。
输入格式
第一行:缓存最大大小(整数)和生存时间(秒)(整数)。第二行:命令数量 N(整数)。接下来 N 行,每行一条命令:'add 键 值 优先级' 或 'get 键' 或 'remove_expired'。
输出格式
对于每个 'get' 命令,如果找到键且未过期,则输出其值,否则输出 'null'。对于 'remove_expired',输出被删除元素的数量。对于 'add',不输出任何内容。
示例
示例 1
输入
3 5
8
add a 10 1
add b 20 2
get a
add c 30 3
add d 40 1
get b
get d
remove_expired
输出
10
null
40
1
示例 2
输入
2 10
6
add x 100 5
add y 200 5
get x
add z 300 5
get y
get z
输出
100
null
300
main.cs