我想排序由數字和字母組成,一旦整理將是列表的例子的字符串的ArrayList:ArrayList的
name 1
name 2
name 3
name 11
name 12
name 13
但是當我使用collections.sort ()它排序是這樣的:
name 1
name 11
name 12
name 13
name 2
name 3
任何想法什麼樣的我正在尋找的類型將被稱爲還是怎麼辦呢?
我想排序由數字和字母組成,一旦整理將是列表的例子的字符串的ArrayList:ArrayList的
name 1
name 2
name 3
name 11
name 12
name 13
但是當我使用collections.sort ()它排序是這樣的:
name 1
name 11
name 12
name 13
name 2
name 3
任何想法什麼樣的我正在尋找的類型將被稱爲還是怎麼辦呢?
String
s默認情況下按字母順序排列。您需要實現自己的Comparator<String>
或使用實現Comparable
(或使用Comparator
)的對象來解決此問題,尤其是因爲您正在使用的String
是詞和整數的混合。
執行comprable,重寫compareTo,解析出名字出來,然後你可以通過它們進行排序。你想通過數字或兩者
您可以使用HashMap<Integer,String> map
負全部排序,可以排序它
這是因爲它是按字母順序排序,尋找一次一個字符。
name 13
name 2
這裏, 「name
」 是同一個零件,向前走,你有 「1
」 和 「2
」。 1
在2
之前。請記住13
和2
只是字符串這裏不是數字。您可以write your own comparator。實現你正在嘗試的。
被別人當作建議,您可以編寫自己的Comparator
如下圖所示
Comparator<? super String> myComparator = new Comparator<String>() {
public int compare(String name1, String name2) {
int num1 = Integer.parseInt(name1.split(" ")[1]);
int num2 = Integer.parseInt(name2.split(" ")[1]);
// > : Increasing order
// < : Decreasing order
if(num1 < num2)
return 1;
else
return -1;
}
};
Collections.sort(names, myComparator);
輸出:
名91
名12
名11
名2