有什么简单的方法来降序排序一个数组,就像他们有一个升序排序在数组类?

还是说我必须停止懒惰,自己做这件事:[


当前回答

另一种使用Comparator的方法

import java.util.Arrays;
import java.util.Comparator;
...

Integer[] aInt = {6,2,3,4,1,5,7,8,9,10};
Arrays.sort(aInt, Comparator.reverseOrder()  );

其他回答

您可以使用Comparator.reverseOrder()来使用流操作(Collections.stream())。

例如,假设你有这样一个集合:

List<String> items = new ArrayList<>();
items.add("item01");
items.add("item02");
items.add("item03");
items.add("item04");
items.add("item04");

你可以使用sorted()方法以“自然”的顺序打印项目(或者不用它,得到相同的结果):

items.stream()
     .sorted()
     .forEach(item -> System.out.println(item));

或者要按降序(倒序)打印它们,你可以使用带Comparator的sorted方法并颠倒顺序:

items.stream()
     .sorted(Comparator.reverseOrder())
     .forEach(item -> System.out.println(item));

注意,这要求集合已经实现Comparable(如Integer、String等)。

对于包含原语元素的数组,如果有org.apache.commons.lang(3)可供处置,则简单的反向数组(排序后)的方法是使用:

ArrayUtils.reverse(array);

你可以使用这个对所有类型的对象进行排序

sort(T[] a, Comparator<? super T> c) 

Arrays.sort(a, Collections.reverseOrder());

arrays .sort()不能直接用于按降序对基本数组进行排序。如果试图通过传递Collections.reverseOrder()定义的反向Comparator来调用Arrays.sort()方法,它将抛出错误

没有合适的sort方法(int[],comparator)

这将很好地工作与“对象数组”,如Integer Array,但将不适用于原始数组,如int Array。

按降序对原始数组排序的唯一方法是,首先按升序对数组排序,然后在适当的位置反转数组。这对于二维基元数组也是成立的。

我有下面的工作解决方案

    public static int[] sortArrayDesc(int[] intArray){
    Arrays.sort(intArray);                      //sort intArray in Asc order
    int[] sortedArray = new int[intArray.length];   //this array will hold the sorted values

    int indexSortedArray = 0;
    for(int i=intArray.length-1 ; i >= 0 ; i--){    //insert to sortedArray in reverse order
        sortedArray[indexSortedArray ++] = intArray [i];
    }
    return sortedArray;
}

你可以用这个:

    Arrays.sort(data, Collections.reverseOrder());

Collections.reverseOrder()返回一个使用逆自然顺序的比较器。你可以使用Collections.reverseOrder(myComparator)来获得你自己的比较器的反向版本。