我实现了这种方法来对具有大量属性的团队进行排序 它根据属性是否相等进行排序,然后传递给下一个
这是班级
public class Equipo implements Comparable<Equipo>{
private String nombre;
private int puntos;
private int cantidadPartidosGanados;
private int golesDiferencia;
private int golesAnotados;
private int golesEnContra;
这是方法
public void ordenar() {
Collections.sort(listaEquiposTorneo, new Comparator<Equipo>() {
public int compare(Equipo a, Equipo b) {
if (a.getPuntos() != b.getPuntos()) {
return a.getPuntos() - b.getPuntos();
}
if (a.getCantidadPartidosGanados() != b.getCantidadPartidosGanados()) {
return a.getCantidadPartidosGanados() - b.getCantidadPartidosGanados();
}
if (a.getGolesDiferencia() != b.getGolesDiferencia()) {
return a.getGolesDiferencia() - b.getGolesDiferencia();
}
if (a.getGolesAnotados() != b.getGolesAnotados()) {
return a.getGolesAnotados() - b.getGolesAnotados();
}
if (a.getGolesEnContra() != b.getGolesEnContra()) {
return a.getGolesEnContra() - b.getGolesEnContra();
}
return a.getNombre().compareTo(b.getNombre());
}
});
}
答案 0 :(得分:0)
排序仅在比较是对称时才有效。对于项目A和B:
compare(b,a)==0
暗示compare(a,b)==0
)signum(compare(a,b)) = -signum(compare(a,b)))
如果违反了这种对称性(我认为你的代码就是这种情况),那么排序就会失败。