我试图从2014年到2010年订购一份年份清单,但我在2010年到2014年之间进行了合并。我该如何更改?
这是比较器:
import java.util.Comparator;
import mundoA.Registro;
public class RegistroComparadorA implements Comparator<Registro> {
public int compare(Registro r1, Registro r2) {
int rta = 0;
if (r1.getAnio() >r2.getAnio()) {
rta = 1;
} else if (r1.getAnio() < r2.getAnio()) {
rta = -1;
} else {
rta = r1.getWard().compareTo(r2.getWard());
}
return rta;
}
}
public NodoListaSencilla<T> merge(NodoListaSencilla<T> a, NodoListaSencilla<T> b) {
NodoListaSencilla<T> dummyHead, curr;
dummyHead = new NodoListaSencilla<T>(a.getElemento());
curr = dummyHead;
while(a !=null && b!= null) {
if(c.compare(a.getElemento(), b.getElemento())>0) {
curr.setSiguiente(b);
b = b.getSiguiente();
}
else {
curr.setSiguiente(a);
a= a.getSiguiente();
}
curr = curr.getSiguiente();
}
curr.setSiguiente((a == null) ? b : a);
return dummyHead.getSiguiente();
}
答案 0 :(得分:0)
如果我理解了您的代码,那么您要比较元素a
和b
,并在比较大于零时将当前元素设置为b
。如果你想要更高的年份,你应该将它设置为a
。
请注意,Comparator
具有实用程序功能,因此无需以您的方式显式定义compare
。您可以按如下方式定义订单:
Comparator<Registro> order = Comparator
.comparing(Registro::getAnio)
.reversed()
.thenComparing(Registro::getWard);
这对我来说更明确。