可能重复:
Priority queue in .Net
This question类似,但我想知道:
.Net中是否有优先级队列的class / struct / ...就像STL中有priority_queue
一样。它接受比较功能来支持自定义排序。
我在.Net中找到的最好的东西是 SortedList<键,值> 按键对其值进行排序。因此,一种解决方案是为Key类实现自定义比较接口。但我不能将我的元素分成键/值对。我有必须根据自己的值使用自定义函数排队的原子元素。
那么,.Net中是否有任何集合类接受比较函数来对其元素进行排序?
有没有办法派生支持此功能的.Net类(可能是 HashSet )?
答案 0 :(得分:3)
您可以使用通用的SortedDictionary类。
您可以为constructor指定一个比较器对象,该对象应该处理对象的优先级比较:
public class DataComparer : IComparer<Data>
{
public Int32 Compare(Data a, Data b)
{
if (a == null && b == null)
return 0;
if (a == null)
return -1;
if (b == null)
return +1;
return a.Priority.CompareTo(b.Priority);
}
}
SortedDictionary<Data, Data> priQueue = new SortedDictionary<Data, Data>(
new DataComparer());
答案 1 :(得分:1)
你可以在你的类上实现IComparable并在你的类中创建特定的比较器,这样你就可以使用IList.Sort()?