Arrays.sort(g, (x,y) ->Objects.equals(x[0], y[0])?y[1]-x[1]:x[0] -y[0]);
时间: 2023-10-09 19:06:16 浏览: 66
深入理解java中Arrays.sort()的用法
这段代码使用了Arrays.sort()方法对一个二维数组 g 进行排序。排序的规则是,首先按照每个元素的第一列进行升序排序,如果第一列相等,则按照第二列进行降序排序。
`(x, y) -> Objects.equals(x[0], y[0]) ? y[1] - x[1] : x[0] - y[0]` 是一个Lambda表达式,表示一个Comparator接口的实现。Comparator接口用于定义两个对象之间的比较规则。
具体来说,`(x, y) -> Objects.equals(x[0], y[0]) ? y[1] - x[1] : x[0] - y[0]` 的意思是:
- 如果两个元素的第一列相等,就比较它们的第二列,即 `y[1] - x[1]`;
- 如果两个元素的第一列不相等,就比较它们的第一列,即 `x[0] - y[0]`。
这样的比较规则可以确保在排序时,先按照第一列升序排列,如果第一列相等,则按照第二列降序排列。
你可以将这段代码嵌入到你的程序中,然后对二维数组 g 进行排序。例如:
```java
int[][] g = {{1, 4}, {2, 3}, {1, 5}, {2, 2}};
Arrays.sort(g, (x, y) -> Objects.equals(x[0], y[0]) ? y[1] - x[1] : x[0] - y[0]);
System.out.println(Arrays.deepToString(g));
```
运行这段代码会输出以下结果:
```
[[1, 5], [1, 4], [2, 3], [2, 2]]
```
这样就实现了按照指定规则对二维数组进行排序。希望这个答案能够解决你的问题!如果还有其他问题,请继续提问。
阅读全文