Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解Java使用Arrays.sort()对2D数组进行排序_Java_Arrays_Sorting - Fatal编程技术网

了解Java使用Arrays.sort()对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

我当时正在研究一个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])
是一个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[][]
,这就像对
列表进行排序一样。如果您有一个
字符串[][]
,这就像对
列表进行排序一样。然而,如果你有一个
字符串[]
,这就像是对一个
列表进行排序一样。哦,哇,这是一个很好的思考方式!这很有帮助!非常感谢。