Предыстория проблемы:список сравнения метод с массивом
Im в настоящее время работает на следопыта. Моей последней версией была способность загружать в разные карты, а не только один массив, содержащий карту. Поэтому, прежде чем это выглядело так:
Node[] mMatrix;
Однако, поскольку я хочу загрузить в разные сегменты узлов. Я сделал это:
List<Node[]>
Класс, узел просто содержит ИНТ объявлен как F.
А теперь к вопросу!
Чтобы быть в курсе, конкретный вопрос: как бы вы сравниваете объект типа: Список < Узел []> в классе IComparer Compare.
Я использую 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;
}
}
Любой зная, как сделать компаратор с новым Im использования структурой данных? Спасибо заранее!
Вы получаете список 'Список n2 = (Список ) b;' и попробуйте получить поле 'F' из списка,' n1.F', этот 'n1' является List, а не узлом –
Grundy
[Пожалуйста, не помещайте теги в ваш вопрос заголовок.] (http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles) –
Чтобы реализовать 'IComparer', вам понадобится 'Compare (int, int) ', что делает ваш новый метод сравнения совершенно бесполезным. Вероятно, вам нужно работать на другом уровне; ведь как вы можете просто сравнить два списка массивов объектов? Это выглядит довольно сложной проблемой. –