Java 如何根据行中的最大值对二维数组进行排序
我希望对高分数组进行排序,存储在如下结构的2d数组中: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] [
[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感谢它的纠正