我正在尝试在 C# 中创建对象的“有序”缓存,其中的顺序取决于已访问的次数。
我查看了 Dictionary、SortedList 和 SortedDictionary,它们非常接近,但并不完全符合我的要求。
我想要一个包含所有以前缓存的项目的列表,这些项目可以有一种getHits()
方法来确定缓存项目的顺序。
然后我可以按名称访问该缓存并增加查看项目的次数。
简化示例(在Pseudo C#中):
class Result {
public int Hits = 0;
public string Name = "";
public void IncreaseHits() {
this.hits++;
}
public Result(String name) {
this.name = name;
}
}
class Program {
public MagicSortableType<string, Result> MyCache; //what structure to use?
public main() {
MyCache.Add(new Result("My result 1"));
MyCache.Add(new Result("My result 2"));
MyCache.Add(new Result("My result 3"));
MyCache['My result 2'].IncreaseHits();
MyCache['My result 2'].IncreaseHits();
MyCache['My result 3'].IncreaseHits();
MyCache.SortDesc(); //what is the real C# equivalent?
foreach(Result result in MyCache) {
Console.Write(result.Name + " - hits " + result.Hits);
}
}
}
输出:
My result 2 - hits 2
My result 3 - hits 1
My result 1 - hits 0