我有值的字符串數組列表像Android的數組列表排序
2.25mm
2.75mm
5mm
5.5mm
排序時沒有小數位的排序正確的價值觀。 5.5mm進展5mm,其中2.25mm正確進行2.75mm
我還沒有比較器的任何經驗,所以任何幫助將不勝感激。
我有值的字符串數組列表像Android的數組列表排序
2.25mm
2.75mm
5mm
5.5mm
排序時沒有小數位的排序正確的價值觀。 5.5mm進展5mm,其中2.25mm正確進行2.75mm
我還沒有比較器的任何經驗,所以任何幫助將不勝感激。
既然要排序的條目String
,其行爲不作爲數字排序爲字符notiation,.
(ASCII 46)到來之前m
(ASCII 109),因此5.5mm
比5mm
上升。
創建通過剝離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");
}
您正在將它們排序爲字符串,字符m
出現在字符.
之前。
只要刪除mm
並對解析的BigDecimal
值進行排序,可能會更容易一些。
如果你需要毫米,並按字符串排序,我認爲這個問題已經得到解答:
謝謝不錯的解決方案。 – Mark
@ user1706269:如果這有幫助,請不要忘記接受答案(點擊投票旁邊的箭頭)。 –
今天我被允許第一次接受答案,所以我回來獎勵你,再次感謝。 – Mark