[英]Sort a 2d array by the length of subarrays
我要完成以下任务:
你得到一个 arrays 数组。 如果您按 arrays 的长度排序,您会看到它们的长度值是连续的。 但是缺少一个数组,您必须编写一个方法。 返回缺失数组的长度。
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;
}
这适用于排序的 arrays。 所以我只需要一种按长度排序的方法。
是否可以按其子数组的(升序)长度对二维数组进行排序?
例如: [[1,2], [1,5,7],[4]] -> [[4], [1,2], [1,5,7]]
Arrays.sort(arr)
不起作用,我得到:
Ljava.lang.Object; 不能转换为 java.lang.Comparable
使用此方法:
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;
}
您可以使用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]]
另请参阅:按第一列排序二维数组,然后按第二列
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.