我需要根據字符串的長度對LinkedList的字符串進行排序,但是想要保持長度相同的字符串的順序(不按字典順序排序)。如何對LinkedList進行排序<String>?
樣品輸入:
this
is
just
a
test
樣本輸出:
a
is
this
just
test
我試圖用一個Comparable<LinkedList<String>>
和compareTo
方法來做到這一點,但我沒有得到正確的輸出(我仍然按字典順序排序)
public class Q3_sorting implements Comparable<LinkedList<String>> {
Scanner keyboardScanner = null;
LinkedList<String> fileList = new LinkedList<String>();
// [...]一些代碼這裏
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;
}
}
然後我在我的主要方法使用
Q3_sorting sort = new Q3_sorting(args);
Collections.sort(sort.fileList);
。然後,我將清單打印出來...
,但我得到這個作爲輸出:
a
is
just
test
this
我怎麼會糾正這個問題?
「Collections.sort」的任何合理實現都會在排序之前將數據複製到數組中,然後再次複製。但是,「LinkedList」通常效率低下,通常應避免使用。 –