背景的问题:比较方法列表中数组
进出口目前工作的一个探路者。我最新的实现是能够加载不同的地图文件,而不是只使用一个包含地图的数组。所以在它看起来像这样:
Node[] mMatrix;
然而,因为我想加载节点的不同部分。我做了这个:
List<Node[]>
类,节点只包含一个int声明为F.
而现在的问题!
简而言之,具体问题是如何比较IComparer成员比较方法中类型的对象:List < Node []>。
我一直在使用priorityQueue来加速探路算法,但现在我在比较这个新的“二维”数据结构时遇到了问题。 对于我老工作实现我用这个:
internal class ComparePFNodeMatrix : IComparer<int>
{
//Variables Declaration
Node[] mMatrix;
//Constructors
public ComparePFNodeMatrix(Node[] matrix)
{
mMatrix = matrix;
}
//IComparer Members
public int Compare(int a, int b)
{
if (mMatrix[a].F > mMatrix[b].F)
return 1;
else if (mMatrix[a].F < mMatrix[b].F)
return -1;
return 0;
}
}
任何人都知道如何使即时通讯使用新的数据结构一个比较器? 预先感谢!
获取列表'列表 n2 =(列表)b;'尝试从列表中获取字段'F','n1.F'这个'n1'是列表,而不是节点 –
Grundy
[请勿将标记放入(http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles) –
要实现'IComparer',你需要一个'Compare(int, int)'方法,这使得你的新的比较方法完全无用。你可能需要在不同的层面上运作;毕竟如何简单地比较两个对象数组列表?它看起来像一个相当复杂的问题。 –