【发布时间】:2021-05-09 05:19:29
【问题描述】:
public List<List<Integer>> demo(int[][] buildings) {
List<List<Integer>> tracker = new ArrayList<>();
int pointer = 0;
for (int i = 0; i < buildings.length; i++) {
tracker.add(Arrays.asList(buildings[i][0], -buildings[i][2]));
tracker.add(Arrays.asList(buildings[i][1], buildings[i][2]));
}
Collections.sort(tracker, (a, b) -> {
if (a.get(0) != b.get(0)) {
return a.get(0).compareTo(b.get(0));
} else {
return a.get(1).compareTo(b.get(1));
}
});
return tracker;
}
当我输入时:
[[1,10001,10000],[2,10001,9999],[3,10001,9998]]
我得到的输出是:
[[1,-10000],[2,-9999],[3,-9998],[10001,10000],[10001,9999],[10001,9998]]
这不是我期望的输出,因为我的排序规则应该是当10001 == 10001 时,第二个坐标较小的应该首先排列。
【问题讨论】:
标签: java list sorting collections