【问题标题】:Sort a 2d array by the length of subarrays按子数组的长度对二维数组进行排序
【发布时间】:2021-04-23 18:07:27
【问题描述】:

我要完成以下任务:

你得到一个数组数组。 如果您按数组的长度对数组进行排序,您会看到它们的长度值是连续的。但是缺少一个数组!您必须编写一个方法,返回缺失数组的长度。

public static int getLengthOfMissingArray(Object[][] arrayOfArrays) {
    if (arrayOfArrays.length == 0) { //array empty
        return 0;
    }
    for (int i = 0; i < arrayOfArrays.length; i++) {
        //array in the array empty
        if (arrayOfArrays[i].length == 0) {
            return 0;
        }
        if (arrayOfArrays[i].length != arrayOfArrays[i + 1].length - 1) {
            return arrayOfArrays[i].length + 1;
        }
    }
    return 0;
}

这适用于排序数组。所以我只需要一种按长度排序的方法。

是否可以按其子数组的(升序)长度对二维数组进行排序?

例如:[[1,2], [1,5,7],[4]] -&gt; [[4], [1,2], [1,5,7]]

Arrays.sort(arr) 不起作用,我得到:

Ljava.lang.Object;不能转换为 java.lang.Comparable

【问题讨论】:

    标签: java arrays sorting multidimensional-array


    【解决方案1】:

    使用这个方法:

    public static int[][] sort(int[][] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j].length < arr[i].length) {
                    // If the length of the array in j less than the
                    // length of the array in i, replace between them
                    int[] temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        return arr;
    }
    

    【讨论】:

      【解决方案2】:

      你可以使用Arrays.sort(T[],Comparator)方法:

      Object[][] arr = {{1, 2}, {1, 5, 7}, {4}};
      
      Arrays.sort(arr, Comparator.comparing(subArr -> subArr.length));
      
      System.out.println(Arrays.deepToString(arr));
      // [[4], [1, 2], [1, 5, 7]]
      

      另见:Sort a 2d array by the first column, and then by the second one

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-02
        • 2013-08-17
        • 2022-10-06
        • 2020-04-05
        • 1970-01-01
        • 2021-11-24
        • 1970-01-01
        • 2018-06-02
        相关资源
        最近更新 更多