小智 305
您可以使用它来排序所有类型的对象
sort(T[] a, Comparator<? super T> c)
Arrays.sort(a, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)
Arrays.sort()不能直接用于按降序对原始数组进行排序.如果尝试Arrays.sort()通过传递定义的反向比较器来调用该方法Collection.reverseOrder(),则会抛出错误
没有为sort(int [],比较器)找到合适的方法
这将适用于Integer数组,但不适用于int数组.
按降序对基本数组进行排序的唯一方法是,首先按升序对数组进行排序,然后将数组反转到位.对于二维原始数组也是如此.
小智 90
你可以用这个:
Arrays.sort(data, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)
Collections.reverseOrder()Comparator使用逆自然顺序返回a .您可以使用自己的比较器获得反转版本Collections.reverseOrder(myComparator).
Orn*_*ter 90
列表
Collections.sort(list, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)
对于一个数组
Arrays.sort(array, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)
小智 53
另一种选择可能是(数字!!!)
直译:
array = -Arrays.sort(-array)
Run Code Online (Sandbox Code Playgroud)
小智 47
没有明确的比较:
Collections.sort(list, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)
明确的比较器:
Collections.sort(list, Collections.reverseOrder(new Comparator()));
Run Code Online (Sandbox Code Playgroud)
kim*_*udi 14
不能直接int[] arr = {1, 2, 3};使用Arrays.sort()and对原始数组(即)进行反向排序,Collections.reverseOrder()因为这些方法需要引用类型 ( Integer) 而不是原始类型 ( int)。
但是,我们可以使用 Java 8 Stream 首先将数组装箱以逆序排序:
// an array of ints
int[] arr = {1, 2, 3, 4, 5, 6};
// an array of reverse sorted ints
int[] arrDesc = Arrays.stream(arr).boxed()
.sorted(Collections.reverseOrder())
.mapToInt(Integer::intValue)
.toArray();
System.out.println(Arrays.toString(arrDesc)); // outputs [6, 5, 4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
小智 8
首先,您需要使用以下方法对数组进行排序:
Collections.sort(myArray);
Run Code Online (Sandbox Code Playgroud)
然后,您需要使用以下方法将顺序从升序反转为降序:
Collections.reverse(myArray);
Run Code Online (Sandbox Code Playgroud)
Java 8:
Arrays.sort(list, comparator.reversed());
Run Code Online (Sandbox Code Playgroud)
更新:
reversed()反转指定的比较器.通常,比较器按升序排序,因此这会将顺序更改为降序.
对于包含基元元素的数组,如果org.apache.commons.lang(3)可以使用的话,可以使用简单的方法来反转数组(排序后):
ArrayUtils.reverse(array);
Run Code Online (Sandbox Code Playgroud)
小智 5
当数组是 Integer 类的类型时,您可以使用以下内容:
Integer[] arr = {7, 10, 4, 3, 20, 15};
Arrays.sort(arr, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)
当数组是 int 数据类型时,您可以使用以下内容:
int[] arr = {7, 10, 4, 3, 20, 15};
int[] reverseArr = IntStream.rangeClosed(1, arr.length).map(i -> arr[arr.length-i]).toArray();
Run Code Online (Sandbox Code Playgroud)