基本上我想使用“Arrays.Sort”将我的数组从更高的humbers 排序到 lowe numbers 。遗憾的是,虽然我不知道如何从高到低对它进行排序,因为“Arrays.sort”将这些数组从低到高排序。
有什么建议吗?
代码:
double sortArrays[] = {
(float) probabilityOfFlush,
(float) probabilityOfFullHouse,
(float) probabilityOfOnePair,
(float) probabilityOfPoker,
(float) probabilityOfRoad,
(float) probabilityOfRoyalFlush,
(float) probabilityOfTriple,
(float) probabilityOfTwoPairs
};
Arrays.sort (sortArrays);
System.out.println(Arrays.toString(sortArrays));
嗯,输出就像这样一个例子:
[0.0,0.18018017709255219,0.36036035418510437,2.33423423767089844,2.882882833480835,2.882882833480835,4.504504680633545,45.76576614379883]
答案 0 :(得分:4)
Arrays.sort(array,Collections.reverseOrder());
正如Bhesh在下面指出的那样,您需要使用Double[]
数组而不是double[]
,因为这不适用于基本类型。
直接应用于您的代码:
Double[] sortArrays = {
(Double) probabilityOfFlush,
(Double) probabilityOfFullHouse,
(Double) probabilityOfOnePair,
(Double) probabilityOfPoker,
(Double) probabilityOfRoad,
(Double) probabilityOfRoyalFlush,
(Double) probabilityOfTriple,
(Double) probabilityOfTwoPairs
};
Arrays.sort(sortArrays, Collections.reverseOrder());
System.out.println(Arrays.toString(sortArrays));
我将double sortArrays[]
更改为Double[] sortArrays
:
Double
中的大写字母D确实存在。此大写D使用Double
对象类型而不是double
基元类型。 您还需要将import java.util.Collections;
添加到类文件的顶部。既然你提到你正在使用eclipse,你可以按住ctrl + shift并按o以通过导入未排序的类,删除未使用的导入以及按包组织导入来自动处理你的导入。
答案 1 :(得分:2)
列表
Collections.sort(list ,Collections.reverseOrder());
对于数组
Arrays.sort(array, Collections.reverseOrder());
Collections.reverseOrder()
使用比较器反转自然顺序。
注意:它无法对基元数组进行排序,因此您需要将基元转换为各自的对象。 int的整数,double的double,布尔的布尔值等等。
使用示例
Double sortArrays[] = new Double[]{1.0,2.0,3.0,5.0,6.0};
Arrays.sort(sortArrays, Collections.reverseOrder());
System.out.println(Arrays.toString(sortArrays));
//output [6.0, 5.0, 3.0, 2.0, 1.0]
答案 2 :(得分:1)
如果要保留基元,可以对数组进行排序,然后将其反转。请注意,您必须使用apache library。这将在O(nlogn)
Arrays.sort(array);
ArrayUtils.reverse(array);
如果您不想使用exernal库,可以使用代码:
public static void reverse(double[] array) {
if (array == null) {
return;
}
int i = 0;
int j = array.length - 1;
double tmp;
while (j > i) {
tmp = array[j];
array[j] = array[i];
array[i] = tmp;
j--;
i++;
}
}
答案 3 :(得分:0)
我建议使用比较器
Arrays.sort(array, new Comparator<Double>()
{
@Override
public int compare(Double x, Double y)
{
return y - x;
}
});
使用带y-x的比较器将从最高到最低排序,x - y将从最低到最高排序。