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