关于Array.sort()在二维数组中的用法详解

关于Array.sort()在二维数组中的用法详解

最近刷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}     

  }

 

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 关于Array.sort()在二维数组中的用法详解