我有一个字符串数组列表,其值类似于
2.25mm
2.75mm
5mm
5.5mm
对没有小数位的值进行排序时,排序不正确。
5.5mm前进5mm,其中2.25mm正确前进2.75mm
我没有比较器的经验,所以我们将不胜感激。
最佳答案
由于您将条目按String
进行排序,因此它的行为不如字符符号中的数字排序,因此.
(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");
}