Es que hay que currase un poco el comparador.
Aqui te pongo uno sobre tu codigo. No lo he probado y lo mismo ni compila (lo he hecho en el notepad) pero te puede dar una idea
Código Java:
Ver originalpublic class Prueba {
public static void main
(String[] args
) { // TODO Auto-generated method stub
List<String> lista = new ArrayList<>();
//solo letras minusculas
lista.add("12a");
lista.add("acd");
lista.add("a%c");
lista.add("bdc");
lista.add("bc");//las contrasenas no tienen que ser del mismo tamano
}
}
class Ordenar implements Comparator<String> {
@Override
if (o1 == null && o2 == null) {
return 0;
} else if (o2 == null) {
return -1;
} else if (o1 == null) {
return 1;
}
//Select shortest to pivot on
int shortest = (o1.length() <= o2.length()) ? o1.length() : o2.length();
for (int i = 0; i < shortest; i++) {
char charO1 = o1.charAt(i);
char charO2 = o2.charAt(i);
return -1;
} else {
int comp
= Character.
compare(charO1, charO2
); if (comp != 0) {
return comp;
}
}
return 1;
int comp
= Character.
compare(charO1, charO2
); if (comp != 0) {
return comp;
}
} else {
return -1;
}
} else {
return 1;
} else {
int comp
= Character.
compare(charO1, charO2
); if (comp != 0) {
return comp;
}
}
}
}
return (o1.length() <= o2.length()) ? -1 : 1;
}
}
Un saludo