通用缓存,支持优先级和生存时间

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