了解Java使用Arrays.sort()对2D数组进行排序
我当时正在研究一个Leetcode问题(452.气球破裂的最小箭头数)。我遇到一个用户将其2D数组排序为:了解Java使用Arrays.sort()对2D数组进行排序,java,arrays,sorting,Java,Arrays,Sorting,我当时正在研究一个Leetcode问题(452.气球破裂的最小箭头数)。我遇到一个用户将其2D数组排序为: Arrays.sort(points, (a,b) -> Integer.compare(a[1], b[1])); 我仍在尝试习惯使用Java,但我不清楚使用Integer.compare(a[1],b[1])背后的逻辑。 这是如何定义它的排序方式的?如果您能解释一下为什么使用这种方法对2D数组进行排序,我将不胜感激。整数。(a,b)->整数。比较(a[1],b[1])是一个la
Arrays.sort(points, (a,b) -> Integer.compare(a[1], b[1]));
我仍在尝试习惯使用Java,但我不清楚使用Integer.compare(a[1],b[1])
背后的逻辑。
这是如何定义它的排序方式的?如果您能解释一下为什么使用这种方法对2D数组进行排序,我将不胜感激。整数。
(a,b)->整数。比较(a[1],b[1])
是一个lambda表达式,在本例中是的一个实现。该方法通过分别返回负整数、零或正整数来确定第一个参数是小于、等于还是大于第二个参数。Integer.compare(int,int)
方法的工作方式是相同的,只不过是使用int
参数
数组#sort(…)
使用的排序算法迭代数组,并使用比较器比较其元素。算法将根据需要多次参考比较器,使用比较结果确定需要移动哪些元素,直到数组排序
二维数组本质上就是数组的数组。因此,“外部”数组正在根据“内部”数组的索引1
处的值进行排序
如果您仍然不确定lambda表达式,则它等效于以下内容:
Arrays.sort(点,新的比较器(){
@凌驾
公共整数比较(整数[]a,整数[]b){
int a1=a[1];
int b1=b[1];
//整数。比较(a1,b1)
if(a1
假设点
是一个int[][]
明白了!这很有道理!非常感谢。在使用Arrays.sort()对2D数组进行排序时,也总是需要使用一些比较器吗?是的,差不多。如果它有助于思考列表。上述操作类似于对列表进行排序。如果您有一个double[][]
,这就像对列表进行排序一样。如果您有一个字符串[][]
,这就像对列表进行排序一样。然而,如果你有一个字符串[]
,这就像是对一个列表进行排序一样。哦,哇,这是一个很好的思考方式!这很有帮助!非常感谢。