【问题标题】:android arraylist sortandroid 数组列表排序
【发布时间】:2012-11-27 21:55:20
【问题描述】:

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

2.25mm
2.75mm
5mm
5.5mm

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

我对比较器没有任何经验,因此非常感谢任何帮助。

【问题讨论】:

    标签: java android sorting


    【解决方案1】:

    您将这些作为字符串排序,字符 m 位于字符 . 之前。

    删除mm 并对解析的BigDecimal 值进行排序可能会更容易。

    【讨论】:

      【解决方案2】:

      由于您将条目排序为String,它的行为不像字符表示法中的数字排序,.(ASCII 46)在m(ASCII 109)之前,因此5.5mm比@向上移动987654325@。

      通过剥离mm创建另一个小数点列表,将新的小数点列表排序如下:

            List<BigDecimal> decimalList = new ArrayList<BigDecimal>();
            for(String elem: myList){
               decimalList.add(new BigDecimal(elem.substring(0, elem.length()-2)));
            }
            Collections.sort(decimalList);
      

      如果您愿意,可以将排序后的 string 列表重新创建为:

            myList.clear();
            for(BigDecimal elem: decimalList){
                myList.add(elem.doubleValue()+"mm");
            }
      

      【讨论】:

      • @user1706269:如果这有帮助,请不要忘记接受答案(点击投票旁边的箭头)。
      • 今天我第一次被允许接受答案,所以我回来奖励你,再次感谢。
      猜你喜欢
      • 2011-07-16
      • 2014-05-03
      • 1970-01-01
      • 2011-05-21
      • 2013-10-31
      • 2011-01-07
      • 2015-04-13
      • 2014-06-04
      相关资源
      最近更新 更多