Originariamente inviato da cryspolo
Posso benissimo utilizzare i metodi che java mi mette a disposizione, il problema e' che non capisco come fare. Se ad esempio utilizzo il quicksort, come faccio a dirgli che deve confrontare la terza lettera di ogni parola, e non la prima ?
Se usi i sort() del framework non devi, necessariamente, sapere dei bubble-sort, quick-sort ecc...
L'algoritmo di ordinamento è già implementato nei sort!! Tu devi solo implementare un Comparator che definisce il criterio di ordinamento. Dati 2 oggetti, devi solo dire, secondo il tuo criterio, se uno è minore/maggiore/uguale all'altro.
codice:
import java.util.*;
public class Prova {
public static void main(String[] args) {
String[] animali = { "coccodrillo", "gatto", "topo", "cane", "giraffa" };
System.out.println(Arrays.toString(animali));
Arrays.sort(animali, new StringByLenComparator());
System.out.println(Arrays.toString(animali));
// stampa [cane, topo, gatto, giraffa, coccodrillo]
}
}
class StringByLenComparator implements Comparator<String> {
public int compare(String s1, String s2) {
int len1 = s1.length();
int len2 = s2.length();
// compara per la lunghezza
if (len1 < len2) {
return -1; // s1 minore di s2
} else if (len1 > len2) {
return +1; // s1 maggiore di s2
} else {
// per lunghezza uguale, compara lessicograficamente (nel modo naturale)
return s1.compareTo(s2);
}
}
}