次のような値を持つ文字列配列リストがあります
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");
      }