我有一个字符串数组列表,其值类似于

2.25mm
2.75mm
5mm
5.5mm


对没有小数位的值进行排序时,排序不正确。
5.5mm前进5mm,其中2.25mm正确前进2.75mm

我没有比较器的经验,所以我们将不胜感激。

最佳答案

由于您将条目按String进行排序,因此它的行为不如字符符号中的数字排序,因此.(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");
      }

09-17 18:01