我需要一个相当专业的 .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)
I quote:
我需要一直对这个列表进行排序。
我只对第一个感兴趣
列表中的值由
任意时刻排序算法。
这听起来像你做的not想要一个有序队列,但是优先队列 http://en.wikipedia.org/wiki/Priority_queue。如果性能是一个问题,那么 PQ 肯定会更快,O(log n) vs O(n)。但是删除重复问题还需要您保留并行的 HashSet 。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)