【问题标题】:Array sort and print reversed [duplicate]数组排序和打印反转[重复]
【发布时间】:2014-03-12 10:12:52
【问题描述】:

我想按照我在这里的方式对数组进行排序:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int[] numbers = new int[3];

    System.out.println("Enter numbers: ");
    numbers[0] = sc.nextInt();
    numbers[1] = sc.nextInt();
    numbers[2] = sc.nextInt();

    System.out.println("Before: " + Arrays.toString(numbers));
    Arrays.sort(numbers);
    System.out.println("After: " + Arrays.toString(numbers));

}

我的问题是,现在应该颠倒过来。所以它不应该上升,而是下降。有人可以帮帮我吗?

【问题讨论】:

  • 您需要按照您的问题标题对数组进行排序和反转,或者排序并只是反向打印?

标签: java arrays sorting


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您可以从int[] 更改为Integer[],那么您可以使用Arrays.sort() 的重载版本,并将Collections.reverseOrder() 返回的Comparator 作为第二个参数传递:

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

    请注意,这不适用于 int[] 原始数组。

    【讨论】:

    • ^ 好点在这里,您必须将 int[] 更改为 Integer[] 但它不会对数组的内容产生影响。
    • @FaresA。你评论的最后一部分是什么意思?
    • int[] 和 Integer[] 不会对他的程序产生影响。
    • @FaresA。重载的Arrays.sort() 不适用于原始数组。
    • 我的意思是除此之外的一切,它不会影响程序的其余部分。
    【解决方案3】:

    您可以使用Collections 库,它有非常有用的方法,包括.reverseOrder()。它基本上是这样工作的:

    Integer[] yourReversedArray = Arrays.sort(yourArrayHere, Collections.reverseOrder());

    【讨论】:

    • Arrays.sort() 进行就地排序。
    【解决方案4】:

    你可以简单地反转你排序的数组:

    for(int i = 0; i < numbers.length / 2; i++) 
    {
        int temp = numbers[i];
        numbers[i] = numbers[numbers.length - i - 1];
        numbers[numbers.length - i - 1] = temp;
    }
    

    或使用 apache Commons.Lang (http://commons.apache.org/proper/commons-lang/):

    ArrayUtils.reverse(int[] array)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 2018-02-13
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多