我试图在Java中反转一个int数组.
此方法不会反转数组.
for(int i = 0; i < validData.length; i++)
{
int temp = validData[i];
validData[i] = validData[validData.length - i - 1];
validData[validData.length - i - 1] = temp;
}
Run Code Online (Sandbox Code Playgroud)
这有什么问题?
我有一大堆原始类型(双).如何按降序对元素进行排序?
遗憾的是,Java API不支持使用Comparator对基元类型进行排序.
一种解决方法是排序然后反转:
double[] array = new double[1048576];
Arrays.stream(array).boxed().sorted(Collections.reverseOrder())…
Run Code Online (Sandbox Code Playgroud)
这很慢 - 特别是如果阵列已经排序得很好.
什么是更好的选择?
令人惊讶的是,似乎在java中没有简单的单行解决方案在java 8之前按降序排序int数组.例如,检查这篇文章.现在我们有了java 8,是否有一种优雅,简单,单行的方式使用java 8特性,比如stream和lambda表达式,按降序排序int数组?
编辑
我对解决方案感兴趣int[],而不是Integer[].
编辑
我对仅使用JAVA SE库的解决方案感兴趣.
我看过比较器和算法,但我对它们没有多大意义.来自java.util.Collections的比较器.所以我选择使用这个:
//return an array in descending order, using set algorithm
public int[] descendSort()
{
int[] tempArray = new int[temps.length];
for (int i = temps.length-1; i <= 0; --i)
{
tempArray[i] = temps[i];
}
return tempArray;
}
Run Code Online (Sandbox Code Playgroud)
我在客户端创建的数组是这样的:
int[] temps1 = new int[]{45, 76, 12, 102, 107, 65, 43, 67, 81, 14};
Run Code Online (Sandbox Code Playgroud)
我的输出结果如下:
The temperatures in descending order is: 0 0 0 0 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
为什么????