Wie definieren Komparator auf SortedSet<> wie TreeSet<>?

Ich möchte eine lexikalische sortierte Liste von strings, also ging ich mit der basic SortedSet

1)  Set<String> words = new SortedSet<String>(){}

und erkannte, dass SortedSet ist eine abstrakte Klasse, in die ich implementieren müssen, um die comapartor Methode. Also ging ich und suchte bei google und fand heraus, dass treeSet ist besser und ich kann mit dem vordefinierten Komparator-Methode.

2)  SortedSet<String> words = new TreeSet<String>(){}

Wenn Sie ging, um java-docs erkannte ich, dass TreeSet extends AbstractSet eher als SortedSet. Frage 1 - Kann mir jemand erklären, wie die 2. Zeile ist noch arbeiten(wie ich es bin nicht ich verallgemeinere das Set, die ich normalerweise tun würde, stattdessen bin ich mit zwei völlig verschiedenen Klassen keine Parent-child-Beziehung).
Frage 2 - wie definieren Komparator von SortedSet, die Arbeit als TreeSet. So, hier ist der funktionierende code mit TreeSet

SortedSet<String> words = new TreeSet<>();
    Scanner scanner1 = new Scanner(System.in);
    String s1 = scanner1.nextLine();
    int a = scanner1.nextInt();
    while(s1.length()>a){
        words.add(s1.substring(0,a));
        s1 = s1.substring(a);
    }
    Iterator itr  = words.iterator();
    while(itr!= null&&itr.hasNext()){
        System.out.println(itr.next());
    }

Normalen Eingang

welcometojava
3

Erwartete Ausgabe

com
eto
jav
wel

Bearbeiten-1
Für die Antwort auf Frage 2, ich erwarte so etwas

Set<String> words = new SortedSet<String>() {
        @Override
        public Comparator<? super String> comparator() {
            return null;
        }
        ......

Ich im Grunde lernen wollen, wie man ein basic-Komparator "wie" in TreeSet während der Verwendung SortedSet? Ich verstehe, dass, wenn es natürlich ist, Bestell ich brauche nicht zu definieren, eine neue Komparator.

Schreibe einen Kommentar