2012-11-27 49 views
0

我有值的字符串數組列表像Android的數組列表排序

2.25mm 
2.75mm 
5mm 
5.5mm 

排序時沒有小數位的排序正確的價值觀。 5.5mm進展5mm,其中2.25mm正確進行2.75mm

我還沒有比較器的任何經驗,所以任何幫助將不勝感激。

回答

3

既然要排序的條目String,其行爲不作爲數字排序爲字符notiation,.(ASCII 46)到來之前m(ASCII 109),因此5.5mm5mm上升。

創建通過剝離mm另一小數點列表,排序如下新小數清單:

 List<BigDecimal> decimalList = new ArrayList<BigDecimal>(); 
     for(String elem: myList){ 
     decimalList.add(new BigDecimal(elem.substring(0, elem.length()-2))); 
     } 
     Collections.sort(decimalList); 

如果你想,重新排序後名單早在:

 myList.clear(); 
     for(BigDecimal elem: decimalList){ 
      myList.add(elem.doubleValue()+"mm"); 
     } 
+0

謝謝不錯的解決方案。 – Mark

+0

@ user1706269:如果這有幫助,請不要忘記接受答案(點擊投票旁邊的箭頭)。 –

+0

今天我被允許第一次接受答案,所以我回來獎勵你,再次感謝。 – Mark

4

您正在將它們排序爲字符串,字符m出現在字符.之前。

只要刪除mm並對解析的BigDecimal值進行排序,可能會更容易一些。