【二维数组按第一个元素排序】
“按第一个元素排序”通常针对的是二维数组(比如 int[][])或者对象数组。
你可以把二维数组想象成一张表格,每一行是一个小数组。
举个例子
假设我们有这样一个二维数组 intervals:
int[][] intervals = {{3, 5}, {1, 3}, {2, 8}};
它长这样:
第 0 行:[3, 5] -> 第一个元素是 3
第 1 行:[1, 3] -> 第一个元素是 1
第 2 行:[2, 8] -> 第一个元素是 2
“按第一个元素排序”的意思
就是比较每一行的开头那个数字(索引为 0 的元素),然后根据这个数字的大小来给整行排队。
因为 1 < 2 < 3
所以排序后的顺序是:{1, 3}, {2, 8}, {3, 5}
代码是怎么实现的?
文章中的代码是:
Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
这里的 a 和 b 代表表格中的两行(即两个 int[])。
a[0] 就是第一行的第一个数字。
b[0] 就是第二行的第一个数字。
a[0] - b[0] 就是在比较这两个开头的数字。
类比: 就像班里分组,每组有一个组长。老师让各组按组长的学号从小到大排队。虽然每组里还有其他组员,但排队的依据只看组长的学号。
