Ich brauche die Saiten einer LinkedList durch die Länge des Strings zu sortieren, möchte aber die Reihenfolge der gleichen Länge Strings halten (nicht lexikographisch sortiert).Wie wird LinkedList <String> sortiert?
Probeneingang:
this
is
just
a
test
Beispielausgabe:
a
is
this
just
test
Ich versuche, dies mit einer Comparable<LinkedList<String>>
und einem compareTo
Methode zu tun, aber ich nicht bekommen, die richtige Ausgabe (mein noch sortiert es lexikographisch)
public class Q3_sorting implements Comparable<LinkedList<String>> {
Scanner keyboardScanner = null;
LinkedList<String> fileList = new LinkedList<String>();
// [...] etwas Code hier
public int compareTo(LinkedList<String> o) {
// TODO Auto-generated method stub
o = fileList;
for (int i = 0; i < fileList.size() -1; i++) {
if (fileList.get(i).length() == o.get(i+1).length()) {
return 0;
}
if (fileList.get(i).length() > o.get(i+1).length()) {
return -1;
}
if (fileList.get(i).length() < o.get(i+1).length()) {
return 1;
}
}
ich dann
Q3_sorting sort = new Q3_sorting(args);
Collections.sort(sort.fileList);
in meinem Haupt-Methode. Ich drucke dann die Liste aus ...
aber ich habe dies als Ausgabe:
a
is
just
test
this
Wie kann ich dieses Problem beheben? leider
Jede sinnvolle Implementierung von 'Collections.sort' wird die Daten vor dem Sortieren in ein Array kopieren und dann wieder hineinkopieren.' LinkedList' ist jedoch im Allgemeinen ineffizient und sollte normalerweise vermieden werden. –