Мне нужна довольно специализированная коллекция .NET, и я не думаю, что BCL может мне помочь, но я подумал, что выкину ее там, если кто-нибудь узнает о чем-то подобном.
В основном мои требования таковы:
- У меня есть список пар значений, таких как: (3, 10), (5, 10), (3, 7), (5, 5)
- Порядок важен, т.е. (3, 10)! = (10, 3)
- Дубликаты отдельных значений хороши, но дублирующие пары должны быть отброшены (желательно без вывода сообщений).
- Кикер, мне нужен этот список, отсортированный все время. Меня интересует только первое значение в списке, определенное алгоритмом сортировки в любой момент времени.
Итак, пример кода того, что я хочу сделать (поскольку я предполагаю, что это, вероятно, будет реализовано, другие реализации, которые соответствуют вышеописанному, подойдут):
public class Pair
{
public Pair(int first, int second)
{ First = first; Second = second; }
public int First { get; set; }
public int Second { get; set; }
}
SortedQueue<Pair> foo = new SortedQueue<Pair>((left, right) => {
return right.First - left.First;
});
foo.Add(new Pair(10, 3));
foo.Add(new Pair(4, 6));
foo.Add(new Pair(6, 15));
foo.Add(new Pair(6, 13)); // This shouldn't cause a problem
Pair current = foo.Shift(); // current = (4, 6)