Java 如何根据行中的最大值对二维数组进行排序

Java 如何根据行中的最大值对二维数组进行排序,java,arrays,sorting,Java,Arrays,Sorting,我希望对高分数组进行排序,存储在如下结构的2d数组中: [name 1][score 1] [name 2][score 2] [name 3][score 3] [name 4][score 4] [name 5][score 5] [name 6][score 6] [name 1][100] [name 2][200] [name 3][50] [name 4][700] [name 5][640] [name 6][277] [name 4][700] [name 5][640] [

我希望对高分数组进行排序,存储在如下结构的2d数组中:

[name 1][score 1]
[name 2][score 2]
[name 3][score 3]
[name 4][score 4]
[name 5][score 5]
[name 6][score 6]
[name 1][100]
[name 2][200]
[name 3][50]
[name 4][700]
[name 5][640]
[name 6][277]
[name 4][700]
[name 5][640]
[name 6][277]
[name 2][200]
[name 1][100]
[name 3][50]
因此,如果数组如下所示:

[name 1][score 1]
[name 2][score 2]
[name 3][score 3]
[name 4][score 4]
[name 5][score 5]
[name 6][score 6]
[name 1][100]
[name 2][200]
[name 3][50]
[name 4][700]
[name 5][640]
[name 6][277]
[name 4][700]
[name 5][640]
[name 6][277]
[name 2][200]
[name 1][100]
[name 3][50]
我希望它可以这样分类:

[name 1][score 1]
[name 2][score 2]
[name 3][score 3]
[name 4][score 4]
[name 5][score 5]
[name 6][score 6]
[name 1][100]
[name 2][200]
[name 3][50]
[name 4][700]
[name 5][640]
[name 6][277]
[name 4][700]
[name 5][640]
[name 6][277]
[name 2][200]
[name 1][100]
[name 3][50]
因此,我基本上必须根据行中存储的最高int对行进行排序。

publicstaticvoidmain(String[]args){
public static void main(String[] args) {
    Object[][] array= {
            {"Name 1", 100},
            {"Name 2", 200},
            {"Name 3", 50},
            {"Name 4", 700} 
            };

    Arrays.sort(array, new java.util.Comparator<Object[]>() {
        public int compare(Object[] a, Object[] b) {
            int result = Integer.compare((Integer)b[1], (Integer)a[1]);
            if(result==0) { //Incase the scores are same, sort by name
                return ((String)a[0]).compareTo((String)b[0]);
            }
            return result;
        }
    });
    
    for (Object[] row : array) {
        for (Object x : row) { 
            System.out.print(x + " "); 
        }
        System.out.println();
    }   
}

Name 4   700   
Name 2   200   
Name 1   100   
Name 3   50  
对象[][]数组={ {“名称1”,100}, {“名称2”,200}, {“名称3”,50}, {“名称4”,700} }; sort(array,new java.util.Comparator(){ 公共整数比较(对象[]a,对象[]b){ int result=Integer.compare((Integer)b[1],(Integer)a[1]); 如果(结果==0){//如果分数相同,请按名称排序 返回((字符串)a[0])。比较((字符串)b[0]); } 返回结果; } }); 对于(对象[]行:数组){ 对于(对象x:行){ 系统输出打印(x+“”); } System.out.println(); } } 姓名4700 姓名2200 姓名1100 姓名350
好的,我们看到了输入和预期的输出,但是您的代码在哪里,或者您到目前为止尝试了什么?添加您的代码或您面临的错误。。。如果您对哈希或键值对有任何想法。。。这对你来说不会有太大问题。这回答了你的问题吗
Arrays.sort(yourray,Comparator.comparingit(i->i[0]))
此外,您可能不应该为此使用数组。但是你自己的
集合
@AlexRudenko感谢它的纠正