Ich mag eine lexikalische sortierte Liste von Strings machen, also ging ich mit dem Grunde SortedSetWie definiere ich den Vergleicher auf SortedSet <> wie TreeSet <>?
1) Set<String> words = new SortedSet<String>(){}
und erkennen, dass SortedSet eine abstrakte Klasse ist, in dem ich die comapartor Methode zu implementieren. Also ging ich und suchte auf Google und fand heraus, dass TreeSet besser ist, und ich kann seine vordefinierte Vergleichsmethode verwenden.
2) SortedSet<String> words = new TreeSet<String>(){}
Als ich zu Java Docs ging, erkannte ich, dass TreeSet AbstractSet statt SortedSet erweitert. Frage 1 - Kann jemand erklären, wie die 2. Zeile noch funktioniert (wie ich verallgemeinere nicht das Set, das ich normalerweise tun würde, stattdessen verwende ich zwei völlig verschiedene Klassen ohne Eltern Kind Beziehung). Frage 2 - wie definiert man Komparator von SortedSet, die als TreeSet arbeiten wird. Also hier ist der Arbeits 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 der Frage 2, erwarte ich so etwas wie diese
Set<String> words = new SortedSet<String>() {
@Override
public Comparator<? super String> comparator() {
return null;
}
......
Ich möchte im Grunde lernen, wie man einen grundlegenden Komparator "wie" in TreeSet während SortedSet? Ich verstehe, dass, wenn es eine natürliche Ordnung gibt, ich keinen neuen Komparator definieren muss.
Haben Sie die Antwort auf erste Frage. Jetzt brauchen Sie die Antwort auf die zweite Frage. –
Mögliches Duplikat von [Was ist der Unterschied zwischen einer Schnittstelle und einer abstrakten Klasse?] (Http://stackoverflow.com/questions/1913098/what-is-the-difference-between-an-interface-and-abstract-class) – shmosel