我有一个字符串数组列表,其值如下
2.25mm
2.75mm
5mm
5.5mm
对没有小数位的值进行排序时,排序不正确。5.5mm 前进 5mm,其中 2.25mm 正确前进 2.75mm
我对比较器没有任何经验,因此非常感谢任何帮助。
您将这些排序为字符串,并且字符m
出现在字符之前.
。
mm
仅删除和对解析BigDecimal
值进行排序可能会更容易。
由于您将条目排序为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");
}