Ver Mensaje Individual
  #14 (permalink)  
Antiguo 21/10/2014, 12:27
Avatar de Profesor_Falken
Profesor_Falken
 
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Ordenar ArrayList

Buenas,

Está muy bien y es más DRY, solo le veo dos pegas de funcionamiento:
-Si un elemento de la lista es null explota con un NullPointerException.
-Da prioridad a las palabras con menos letras, que no es lo que se busca.

Por ejemplo, con la lista del ejemplo de este post devuelve esta ordenación:
[bc, acd, a%c, bdc, 12a]

Cuando debería devolver ésta:
acd, a%c, bc, bdc, 12a

Para arreglarlo basta con desplazar el if de la longitud después del bucle.

Código Java:
Ver original
  1. @Override
  2.     public int compare(String o1, String o2) {
  3.         int length = o1.length();
  4.         int compare;
  5.         for (int i = 0; i < length; i++) {
  6.             compare = compare(o1.charAt(i), o2.charAt(i));
  7.             if (compare != 0) {
  8.                 return compare;
  9.             }
  10.         }
  11.        if (o2.length() != length) {
  12.             return length - o2.length();
  13.         }
  14.  
  15.         return 0;
  16.     }


Un saludo
__________________
If to err is human, then programmers are the most human of us