Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,按每个元素的第一部分对字符串数组进行排序_Java_Arrays_String_Sorting - Fatal编程技术网

在java中,按每个元素的第一部分对字符串数组进行排序

在java中,按每个元素的第一部分对字符串数组进行排序,java,arrays,string,sorting,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 Compara

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

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;

                                                }



                    }
                });
但它似乎不起作用。。。
我做错了什么?

只需使用比较器即可


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

使用比较器,然后使用浮点比较器:

   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]));
        }
    });

如果你想知道,你没有努力=投反对票。如果您发布一些代码,您将获得更好的响应。这与排序任何普通数组没有什么不同。首先要做的就是将字符串拆分为int和一个字符串数组(可能是一个类)。然后根据整数进行排序。很好的问题。现在你试过什么了吗?这取决于你如何构造你的字符串,如果你能把它转换成g或mg,那么它将是非常直接的。。所以,你需要告诉我什么是你能做的,什么是你不能做的。是的,有很多简单的方法。你能发布你的代码吗。我可以试着引导你通过它。你忘记了0的情况,但你最好使用@David Perez提供的答案。