我们有一个u
(其中u
是预定义的)。我们要根据数组中元素之间的差异对此进行排序,如下所示:
根据与u
的差异对数组进行排序
示例:[U]
数组中元素之间的区别:int[][] nums = new int[n][2]
根据上述差异,需要最终排序的数组:n
有什么方法可以使用nums[i][0] - nums[i][1]
来实现这种排序方法?
答案 0 :(得分:2)
我提供了两种解决方法,一种通过Comparator
排序,另一种通过Lambda
排序(这就是您想要的!)
import java.util.Arrays;
import java.util.Comparator;
public class lambdaFor2DArrays {
public static void main(String[] args){
int[][] matrix = {{1,2}, {3,20}, {40,5}, {3,2}};
// Sort By Comparator
/*
Arrays.sort(matrix, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return (o1[0] - o1[1]) - (o2[0] - o2[1]);
}
});
*/
// Sort By Lambda
Arrays.sort(matrix, (int[] o1, int[] o2)->{
return (o1[0] - o1[1]) - (o2[0] - o2[1]);
});
// Print Result
for (int[] arr : matrix) {
for (int a : arr) {
System.out.print(a + " ");
}
System.out.println();
}
}
}
答案 1 :(得分:1)
int[][] nums = new int[][]{{1,2}, {3,20}, {40,5}, {3,2}};
Arrays.sort(nums, Comparator.comparingInt(o -> o[0]-o[1]));
Arrays.asList(nums).forEach(x -> System.out.println(x[0]+" "+x[1]));
输出:
3 20
1 2
3 2
40 5