如何根据第二列中的整数对整数数组进行排序和反转? 示例 - 输入 - {{1,2},{1,1},{1,3},{1,1},{1,4}} 输出 - {{1,4},{1,3},{1,2},{1,1},{1,1}} 任何人都可以在我的代码中指出错误,它会给出编译错误。
import java.util.*;
class twod_sort implements Comparator{
public static void main(String []args){
int a[][]={{1,2},{1,1},{1,3},{1,1},{1,4}};
Arrays.sort(numbers, new Comparator<int[]>(){
public int compare(Integer[] o1, Integer[] o2) {
return o1[1].compareTo(o2[1]);
}
});
}
}
答案 0 :(得分:1)
DominicEU的回答是正确的,但可以通过使用Java 8 lambda语法以更短的方式写下来:
Arrays.sort(input, (v1, v2) -> Integer.compare(v2[1], v1[1]));
这将以相反的顺序对输入数组进行排序,而不是仅以相反的顺序将其打印到控制台(请注意Integer.compare函数中交换的v1和v2)。
答案 1 :(得分:0)
这样的东西会为你提供你想要的输出
final Integer[][] data = new Integer[][] {
new Integer[] { 1, 2 },
new Integer[] { 1, 1 },
new Integer[] { 1, 3 },
new Integer[] { 1, 1 },
new Integer[] { 1, 4 } };
Arrays.sort(data, new Comparator<Integer[]>() {
@Override
public int compare(final Integer[] obj, final Integer[] obj2) {
final Integer fistValue = obj[1];
final Integer secondValue = obj2[1];
return fistValue.compareTo(secondValue);
}
});
for (int i = data.length - 1; i >= 0; i--) {
System.out.println(Arrays.toString(data[i]));
}
打印以下内容
[1,4] [1,3] [1,2] [1,1] [1,1]