Necesito ordenar las cadenas de una lista enlazada por la longitud de las cadenas, pero me gustaría mantener el orden de cadenas de la misma longitud (no ordenadas lexicográficamente).¿Cómo ordenar LinkedList <String>?
entradamuestra:
this
is
just
a
test
Ejemplo de salida:
a
is
this
just
test
que estoy tratando de hacer esto con un método y una Comparable<LinkedList<String>>
compareTo
, pero no consigo la salida correcta (el mío todavía lo ordena lexicográficamente)
public class Q3_sorting implements Comparable<LinkedList<String>> {
Scanner keyboardScanner = null;
LinkedList<String> fileList = new LinkedList<String>();
// [...] algún código aquí
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;
}
}
que luego usar
Q3_sorting sort = new Q3_sorting(args);
Collections.sort(sort.fileList);
en mi método principal. entonces imprimir la lista a cabo ...
pero me da esto como resultado:
a
is
just
test
this
¿cómo iba a rectificar este problema?
Cualquier implementación razonable de 'Collections.sort' copiará los datos en una matriz antes de ordenarlos, y luego volverá a copiarlos. Sin embargo,' LinkedList' es generalmente ineficiente y generalmente debe evitarse. –