У меня есть класс, который реализует Comparator, но n1 и n2 "могут быть только null". Вот класс:Почему эти переменные могут быть пустыми?
public class MyComparator implements Comparator<Node>{
public int compare(Node n1, Node n2) {
int n1Links = 0;
int n2Links = 0;
while(n1 != null){
n1Links++;
n1 = n1.previous;
}
while(n2 != null){
n2Links++;
n2 = n2.previous;
}
int n1count = 0;
for (int i = 0; i < n1.word.length(); i++){
if (n1.word.charAt(i) != target.charAt(i)){
n1count++;
}
}
int n2count = 0;
for (int i = 0; i < n2.word.length(); i++){
if (n2.word.charAt(i) != target.charAt(i)){
n2count++;
}
}
int n1Total = n1Links + n1count;
int n2Total = n2Links + n2count;
if(n1Total > n2Total){
return 1;
}
else if(n1Total < n2Total){
return -1;
}
return 0;
}
}
Позже у меня есть это:
Queue<Node> queue = new PriorityQueue<Node>(1000, new MyComparator());
, который использует компаратор, а затем я начинаю предлагать узлы в очереди сразу после.
Программа - это игровой решатель слов, который призван найти способ получить от слова X до слова Y, только изменяя по одной букве за раз. Точка компаратора должна помочь с некоторой сортировкой.
Любая идея, почему n1 и n2 могут быть только нулевыми?
Спасибо!