用于比较的 C# 版本的 PriorityQueue

C# version of PriorityQueue for compare

我有 Java 的以下代码,并希望在 C# 中实现相同的代码。 请推荐

    PriorityQueue<Integer> pQ= new PriorityQueue<Integer>((x,y)->Integer.compare(y, x));

我确实将 Integer 转换为 int 但没有帮助。

.NET 版本 < 6

如果您使用的是 .NET Framework 6(或更新版本),您只需要:

var pQ = new PriorityQueue<int, int>();

如果你添加项目你可以给他们一个优先级(第二个参数):

pQ.Enqueue(1, 100);
pQ.Enqueue(2, 10);
// ...

或者您有想要重用的复杂逻辑,然后使用自定义比较器:

public class MyFancyIntComparer : IComparer<int>
{
    public int Compare(int x, int y)
    {
        // replace following with a fancy logic
        return x.CompareTo(y);
    }
}

var pQ = new PriorityQueue<int, int>(new MyFancyIntComparer());

如果您使用的是较低版本的 .NET 框架,您可以使用(复制并粘贴)这些内部 PriorityQueues:https://referencesource.microsoft.com/#q=priorityqueue