按java

时间:2015-06-30 14:41:31

标签: java arrays string sorting

我有一个字符串数组,如:

String[] strengths = new String[] {"0.5 G", "0.8 G", "1 G", "1.6 G", "2.5 G", "5 G", "10 G", "12.5 G", "20 G", "25 G", "30 G"}

如果我使用默认排序

Arrays.sort(strengths) 

它会将元素排序为数字,但我想根据数字按升序对其进行排序。 我尝试使用比较器

Arrays.sort(strengths, new Comparator<String>() {

                    @Override
                    public int compare(String o1, String o2) {
                       try {
                           String[] obj1 = o1.split(" ");
                            String[] obj2 = o2.split(" ");
                            float number1= Float.parseFloat(obj1[0]);
                            float number2= Float.parseFloat(obj2[0]);
                            if ( number1< number2) {return 1;} 
                             else {return -1;}
                    } catch (Exception e) {
                         return 0;

                                                }



                    }
                });

但它似乎不起作用...... 我做错了什么?

2 个答案:

答案 0 :(得分:3)

只需使用比较器。

在比较器代码中,您可以简单地拆分相应的两个字符串,并仅根据整数部分返回比较值。

答案 1 :(得分:2)

使用比较器,然后使用Float Comparator:

   Arrays.sort(strengths, new Comparator<String>() {

        @Override
        public int compare(String o1, String o2) {
            return Float.compare(Float.valueOf(o1.split(" ")[0]), Float.valueOf(o2.split(" ")[0]));
        }
    });