【发布时间】:2020-07-25 06:26:37
【问题描述】:
这个 list.sort() 方法实际上是如何根据对象的属性对对象进行排序的。 这是 LeetCode 问题 1337 的解决方案。
class Solution {
public int[] kWeakestRows(int[][] mat, int k) {
List<Pair> list = new ArrayList<>();
for(int i = 0; i < mat.length; i++) {
int cur = 0;
for(int j = 0; j < mat[0].length; j++) {
cur += mat[i][j];
}
Pair p = new Pair();
p.index = i;
p.count = cur;
list.add(p);
}
list.sort((lh, rh) ->
lh.count != rh.count ? lh.count - rh.count : lh.index - rh.index
);
int[] ret = new int[k];
for(int i = 0; i < k; i++) {
ret[i] = list.get(i).index;
}
return ret;
}
}
class Pair {
int index;
int count;
}
【问题讨论】:
-
首先将
getIndex()和getCount()添加到Pair,然后您当前的代码可以替换为list.sort(Comparator.comparing(Pair::getCount).thenComparing(Pair::getIndex));,它做同样的事情但更具可读性。我希望它更具可读性,您可以理解它。原始版本不是我认为的好代码。 -
问题是什么,排序算法是如何工作的?
标签: java sorting object arraylist