Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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中的2d字符串数组进行排序-对数组中的索引元素进行排序_Java_Arrays_String_Sorting - Fatal编程技术网

对java中的2d字符串数组进行排序-对数组中的索引元素进行排序

对java中的2d字符串数组进行排序-对数组中的索引元素进行排序,java,arrays,string,sorting,Java,Arrays,String,Sorting,嗨,我需要在java中对数组进行二维排序,但我需要在数组中按索引进行排序 我的数组是 String arr[][]={ {"joun","1525565","10"}, {"ALI","15256562","100"}, {"FATEH","1525534","20"} }; 我需要按索引2对数组排序 输出是 String arr[][]={ {"ALI","152565

嗨,我需要在java中对数组进行二维排序,但我需要在数组中按索引进行排序 我的数组是

  String arr[][]={  {"joun","1525565","10"},
                           {"ALI","15256562","100"},
                           {"FATEH","1525534","20"}   };
我需要按索引2对数组排序 输出是

   String arr[][]={ {"ALI","15256562","100"},
                       {"FATEH","1525534","20"},
                         {"joun","1525565","10"} };
我的订单必须是100,然后是20,然后是10

我试着把这段代码放在java中,把程序从索引1和索引2弄糊涂了 我用内线做线圈
Arrays.sort(arr[i])

下面是使用Comparator的解决方案:

public class SortTest {
    public static void main(String[] args) {
        String arr[][]={  {"joun","1525565","10"},
                {"ALI","15256562","100"},
                {"FATEH","1525534","20"}   };

        Arrays.sort(arr, new Comparator<String[]>() {
            @Override
            public int compare(String[] o1, String[] o2) {
                return Integer.parseInt(o2[2]) - Integer.parseInt(o1[2]);
            }
        });

        for (String[] item : arr) {
            System.out.println(Arrays.toString(item));
        }
    }
}
公共类排序测试{
公共静态void main(字符串[]args){
字符串arr[][]={{“joun”、“1525565”、“10”},
{“阿里”,“15256562”,“100”},
{“法泰”、“1525534”、“20”};
sort(arr,新的比较器(){
@凌驾
公共整数比较(字符串[]o1,字符串[]o2){
返回Integer.parseInt(o2[2])-Integer.parseInt(o1[2]);
}
});
对于(字符串[]项:arr){
System.out.println(Arrays.toString(item));
}
}
}

在Java 8中,您可以编写此代码以按索引排序
2
,从而使用

Arrays.sort(arr, Comparator.comparing(row -> -Long.parseLong(row[2])));


用于将升序作为字符串而不是数字

Arrays.sort(arr, Comparator.comparing(row -> row[2]));
这将顺序为
10100,20
,但如果您先创建长字符串,再创建短字符串

Arrays.sort(arr, Comparator.comparing((String[] row) -> row[2].length()).reversed()
                           .thenComparing(row->row[2]));
这将给出顺序为
100、10、20

顺便说一句:我不知道为什么第一行
需要给定的类型

如果你想按数字排序,你可以这样做

Arrays.sort(arr, Comparator.comparing(row -> Long.parseLong(row[2])));
这将使
10、20、100
按递增顺序排列


在Java 8中,您可以添加一个匿名内部类来做同样的事情。

如果它使用数组,则可能会重复。排序会更好,但我认为它不适用于此方法查看Peter Lawrey对
数组的回答。在Java 8中,排序
行是什么?是数组名吗?因为我有一个error@user44444您正在使用Java8吗<代码>行
是嵌套数组的名称。你有什么错误?这是使用Java 8的lambdas和Streams API。好的,我将我的项目更改为8,没有错误,但代码不适用于我,我编写了Arrays.sort(arr,Comparator.comparating(row->row[2]);对于(String[]item:arr){System.out.println(Arrays.toString(item));},我得到的是相同的最后一个数组错误是类型不匹配:无法从字符串转换为Comparable@user44444我尝试了三种不同的方法对数字进行排序您可以解释您想要的排序顺序。它是递减的数字顺序吗?@user44444“它对每件事进行排序”我的意思是它对数字1525565和10进行排序我的数组现在是{“joun”,“1525565”,“100”},但现在是{“joun”,“1525565”,“10”}数组[0]是{“joun”,“1525565”,“100”}@user4444在您的初始示例中是:{“joun”,“1525565”,“10”}我的代码的排序输出是:[ALI 152562,100][FATEH,1525534,20][joun,1525565,10]问题出在哪里?好的,问题出在我身上,因为我的数组与我在示例中编写的数组不同,但它类似,我在您的代码中编辑了一些内容,现在它对我起作用了。您的代码立即与上面的示例起作用。谢谢:)
Arrays.sort(arr, Comparator.comparing(row -> Long.parseLong(row[2])));