我不明白为什么java认为数组“thisRow”在传递到Arrays.sort(thisRow)时是无效的。 “thisRow”对我来说似乎是一个int []。这是什么问题?
错误消息:“类型不匹配:无法在Test.mySort(Test.java:57)上从void转换为int []”
private static int[][] mySort(int[][] anArray) {
for(int i = 0; i < anArray.length; i++){
int thisRow[] = getRow(anArray, i);
int[] sorted = Arrays.sort(thisRow);
}
}
//This method will get the specified row out of the array.
private static int[] getRow(int[][] anArray, int row) {
int thisRow[] = new int[anArray[row].length];
for(int j = 0; j < anArray[row].length; j++){
thisRow[j] = anArray[row][j];
}
return thisRow;
}
答案 0 :(得分:12)
Arrays.sort返回void
而不是int[]
类型。
根据javadoc
将指定的整数数组按数字升序排序。该 排序算法是一种改编的快速排序,改编自Jon L. Bentley 和M. Douglas McIlroy的“工程排序功能”, 软件实践与经验,卷。 23(11)P。1249-1265(11月 1993年)。该算法在许多数据集上提供n * log(n)性能 导致其他快速降级降级为二次性能
替换
int[] sorted = Arrays.sort(thisRow);
带
Arrays.sort(thisRow);
答案 1 :(得分:3)
Arrays.sort
就地对数组进行排序(通过改变现有对象),并且不返回任何内容。因此你应该替换
int[] sorted = Arrays.sort(thisRow);
只需
Arrays.sort(thisRow);
答案 2 :(得分:1)
Arrays#sort
不会返回int[]
,它会返回void
,它会对源数组本身进行排序。
将指定的整数数组按数字升序排序。该 排序算法是一种改编的快速排序,改编自Jon L. Bentley 和M. Douglas McIlroy的“工程排序功能”, 软件实践与经验,卷。 23(11)P。1249-1265(11月 1993年)。该算法在许多数据集上提供n * log(n)性能 导致其他快速降级降级为二次性能。