【发布时间】:2020-10-06 14:22:07
【问题描述】:
这个 Lambda 8 方法出现在 leetcode.com 上的建议答案之一中:https://leetcode.com/problems/merge-intervals/discuss/21222/A-simple-Java-solution
以下是我似乎无法理解的方法:
int[][] intervals = {{8,10}, {1,3},{2,6},{15,18}};
Arrays.sort(intervals, (i1, i2) -> Integer.compare(i1[0], i2[0]));
我知道Arrays.sort() 按升序对数组进行排序,第二个参数应该是它对数组进行排序的范围。
我不明白的是 i1 和 i2 参数以及随后的 Integer.compare() 方法。
i1 和 i2 到底是什么?它们是数组还是整数?
我们怎么不写(int i1, int i2)?是不是因为后面已经提到过 Integer 了?
【问题讨论】:
-
你可以写
(int[] i1, int[] i2),但这不是必须的,因为编译器假定对int[][]进行排序的比较器是Comparator<int[]>。