Originariamente inviato da pupys87
Si si sarebbe ancora meglio grazie ...

Comunque per caso c'è di mezzo il metodo compareTo ?...
compareTo() è di Comparable .... l'ho detto prima: Comparator ha compare().


codice:
import java.util.*;

public class Prova {
    public static void main(String[] args) {
        TreeSet<String> set = new TreeSet<String>(new StrLenComparator());

        set.add("gastone");
        set.add("pippo");
        set.add("topolino");
        set.add("qui");
        set.add("quo");
        set.add("qua");

        for (String s : set) {
            System.out.println(s);
        }
    }
}

class StrLenComparator implements Comparator<String> {
    public int compare(String s1, String s2) {
        if (s1.length() < s2.length()) {
            return -1;
        } else if (s1.length() > s2.length()) {
            return +1;
        } else {
            // Se lunghezza uguale, compara il contenuto
            return s1.compareTo(s2);
        }
    }
}
L'output è:

qua
qui
quo
pippo
gastone
topolino