Я пытаюсь создать «упорядоченный» кеш объектов на С#, где порядок определяется тем, сколько раз к нему обращались.
Я просмотрел Dictionary, SortedList и SortedDictionary, которые были очень близки, но не совсем то, что я ищу.
Я хотел бы иметь список, содержащий все ранее кэшированные элементы, эти элементы могут иметь метод getHits()
, чтобы определить, в каком порядке должны быть кэшированные элементы.
Затем я могу получить доступ к этому кешу по имени и увеличить количество просмотров элемента.
Упрощенный пример (на псевдо-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
MyCache.SortDesc()
? и почему вы добавляетеSortedDictionary
без ключаMyCache.Add(new Result("My result 1"));
? - person Habib   schedule 20.05.2013