Al intentar ordenar una matriz en función de las longitudes de cadena de sus elementos, me aparece un error de compilación. Tengo un juego para empezar,,ordenando longitudes de cadena utilizando el comparador
Set<String> arraycat = new HashSet<String>();
//add contents to arraycat
String[] array = arraycat.toArray(new String[0]);
//array looks like this now:
//array=[cat,cataaaa,cataa,cata,cataaa]
que lo ideal sería que desee ordenados a
array=[cat,cata,cataa,cataaa,cataaaa]
así que tengo un comparador de tipo
class comp implements Comparator {
public int compare(String o1, String o2) {
if (o1.length() > o2.length()) {
return 1;
} else if (o1.length() < o2.length()) {
return -1;
} else {
return 0;
}
}
}
y luego llamo a la clase por
Collections.sort(array, new comp());
pero luego, es thr me permite dos errores de compilación:
comp is not abstract and does not override abstract method compare(java.lang.Object,java.lang.Object) in java.util.Comparator
class comp implements Comparator {
^
testa.java:59: cannot find symbol
symbol : method sort(java.lang.String[],comp)
location: class java.util.Collections
Collections.sort(array, new comp());
^2 errors
Agradeceré cualquier pista para resolver el problema.
Hola Lawrence ... gracias por esto .. Eso ha resuelto el primer error de compilación: pero, todavía tengo otro error de compilación que dice: "no se puede encontrar el símbolo símbolo: method sort (java.lang.String [], comp) ubicación: clase java.util.Collections \t \t Collections.sort (array, new comp()); "He importado el paquete util *, no estoy seguro de por qué recibo este error – JohnJ
[' sort() '] (http://docs.oracle.com/javase/6/ docs/api/java/util/Collections.html # sort (java.util.List)) toma una 'Lista', no una matriz 'String []'. Use ['Arrays.asList()'] (http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#asList(T ...)) para convertirlo. –
Además, para un comparador más simple, considere usar ['Integer.signum (int) '] (http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#signum (int)) en lugar de' if/else-if/else'; por ejemplo, 'return Integer.signum (o1.length() - o2.length());' –