Ho bisogno di ordinare le stringhe di una lista collegata per la lunghezza delle stringhe, ma vorrei mantenere l'ordine delle stringhe della stessa lunghezza (non ordinate lessicograficamente).Come ordinare LinkedList <String>?
ingressoEsempio:
this
is
just
a
test
Output di esempio:
a
is
this
just
test
che sto cercando di fare questo con un metodo Comparable<LinkedList<String>>
e un compareTo
, ma non ho ricevuto l'uscita corretta (la mia ancora lessicograficamente)
public class Q3_sorting implements Comparable<LinkedList<String>> {
Scanner keyboardScanner = null;
LinkedList<String> fileList = new LinkedList<String>();
// [...] qualche codice qui
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;
}
}
Ho quindi utilizzare
Q3_sorting sort = new Q3_sorting(args);
Collections.sort(sort.fileList);
nel mio metodo principale. Ho poi stampare l'elenco fuori ...
ma ottengo questo come output:
a
is
just
test
this
Come dovrei rimediare a questo problema?
Qualsiasi implementazione ragionevole di 'Collections.sort' copierà i dati in un array prima di ordinare, e quindi copierà di nuovo. Tuttavia,' LinkedList' è generalmente inefficiente e di solito dovrebbe essere evitato. –