2013-10-18 34 views
0

雙值我有以下格式排序基於Java中

["BlahBlahBlahBlah 0.9877"] 
["ABCabcABCabcAbc 1.7852"] 

正如你可以在兩者之間看到的字符串列表上的字符串列表是一個單一的空間。由於某些限制,我無法更改設計。

我需要做的是根據最後的雙數對列表進行排序。 任何人都可以幫我實現這個代碼?

+5

實現自定義'Comparator',只有着眼於雙重價值。 –

+1

這是習慣(和良好的形式),以顯示你已經嘗試過,並提出具體問題。否則,它看起來就像你想讓別人爲你做你的工作。請付出一些努力。 –

回答

3

這不是一個單一的空間,但無論如何...

Collections.sort(yourList, new Comparator<String>() { 
    public int compare(String s1, String s2) { 
     double d1 = Double.valueOf(s1.substring(s1.lastIndexOf(' ') + 1)); 
     double d2 = Double.valueOf(s2.substring(s2.lastIndexOf(' ') + 1)); 
     return Double.compare(d1, d2); 
    } 
}); 

(進口java.util.Collections中和了java.util.Comparator如果沒有的話。)

+0

根據列表大小,由於額外的n *(logn - 1)字符串到雙精度轉換,這可能會非常浪費。 – khachik

0

如果你知道一個事實,這一數目將永遠是格式X.XXXX(五個數字和小數點),你可以這樣做「

String asString = yourString.substring(yourString.length-9,yourString.length-3); 
Double asDouble = Double.parseDouble(number);