Java 将整型数组从最高到最低排序

Java 将整型数组从最高到最低排序,java,arrays,sorting,Java,Arrays,Sorting,所以我刚刚了解了Arrays.sort(arrayName)并将其应用于我的一个项目中,但我发现它从最低到最高排序。有没有办法让它做相反的事情?(我不认为我需要发布有问题的代码,但如果需要,我会发布它)。如果使用整数[]而不是int[],那么可以将比较器作为第二个参数传递给排序方法。要实施反向排序,可以使用以下方法: 使用Integer[]而不是int[] 使用:返回一个比较器,该比较器对实现可比较接口的对象集合施加与自然顺序相反的顺序 如果可能,请使用ArrayList和Collections

所以我刚刚了解了
Arrays.sort(arrayName)
并将其应用于我的一个项目中,但我发现它从最低到最高排序。有没有办法让它做相反的事情?(我不认为我需要发布有问题的代码,但如果需要,我会发布它)。

如果使用
整数[]
而不是
int[]
,那么可以将
比较器作为第二个参数传递给排序方法。要实施反向排序,可以使用以下方法:

  • 使用
    Integer[]
    而不是
    int[]
  • 使用:返回一个比较器,该比较器对实现可比较接口的对象集合施加与自然顺序相反的顺序
  • 如果可能,请使用
    ArrayList
    Collections.sort(list,Collections.reverseOrder())
    进行更严格的区分

    Integer[] intArr = new Integer[10];
     // add some integer 
    Arrays.sort(intArr, Collections.reverseOrder())
    

  • 如果您有一个
    int[]
    数组,可以使用
    Arrays对其进行排序。排序
    然后将其反转:

    int [] tab2 = new int[]{1,5,0,-2};
    Arrays.sort(tab2);
    ArrayUtils.reverse(tab2);
    System.out.print(Arrays.toString(tab2));
    
    输出:

    [5, 1, 0, -2]
    
    反向方法的定义(从):


    对于某些用例,您可以将排序的数组视为“反向排序”。例如,要从最高值迭代到最低值,您可以使用

    int[] foo = ...;
    Arrays.sort(foo);
    for (int i=foo.length-1; i>=0; i--) { 
      doSomethingWith(foo[i]);
     }
    

    你会注意到还有另一个
    排序
    方法,它接受一个
    比较器
    @SotiriosDelimanolis:不要对
    int[]
    进行排序。读这个,java.util.Comparator)@Jon有一个操作练习。@SotiriosDelimanolis这不是一个练习,我会发现它是
    数组
    类的一个限制。效果很好!谢谢你的帮助!
    public static void reverse(int[] array) {
            if (array == null) {
                return;
            }
            int i = 0;
            int j = array.length - 1;
            int tmp;
            while (j > i) {
                tmp = array[j];
                array[j] = array[i];
                array[i] = tmp;
                j--;
                i++;
            }
    }
    
    int[] foo = ...;
    Arrays.sort(foo);
    for (int i=foo.length-1; i>=0; i--) { 
      doSomethingWith(foo[i]);
     }