最近刷Leetcode,第1710题卡车上的最大单元数,这个题用到了Array.sor()在二维数组中的实现,其中这句话
Arrays.sort(boxTypes, (a, b) -> b[0] - a[0]);//对二维数组进行排序
让我一直匪夷所思,网上查了了好久才搞清楚,特此记录。
首先复习下二维数组。其实二位数组就是一维数组,只是这个一位数组中的元素不是Int,String等基本类型而是Int [ ]。String [ ]数组类型。
例子:int[][] arr = {{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20}
}
这就是一个二位数组(本质上是一维,一共有4个元素。元素1:{1,2,3,4,5},元素2:{6,7,8,9,10),元素3:{11,12,13,14,15},元素4:{16,17,18,19,20})
Arrays.sort(boxTypes, (a, b) -> b[0] - a[0]),这句话是说我现在定了你的排序方法了,是按每一数组中的第一个数从大到小排序。按上面的例子来说就是
排完序后:
arr = {
{16,17,18,19,20},
{11,12,13,14,15},
{6,7,8,9,10},
{1,2,3,4,5}
}
同理可得:Arrays.sort(boxTypes, (a, b) -> b[3] - a[3]) 就是把每个数组中的第三个数组按从大到小的顺序进行比较。(如果是Arrays.sort(boxTypes, (a, b) -> a[3] - b[3]) 那就是)按从小到大的顺序进行比较)
arr = {
{16,17,18,19,20},
{11,12,13,14,15},
{6,7,8,9,10},
{1,2,3,4,5}
}