【问题标题】:How to output using Arrays.sort如何使用 Arrays.sort 输出
【发布时间】:2018-10-31 20:57:15
【问题描述】:

我正在尝试使用 Arrays.sort 按升序和降序打印 10,000 个随机数,然后将其输出。如果我这样尝试,它不会给出正确的输出。

import java.util.*;
import java.util.Random;

public class QuestionFour 
{
    public static void main(String[] args) 
    {
        int arr[] = new int[10000];
        Random rand = new Random();

        for (int i=0; i<10000; i++)
        {
            arr[i] = rand.nextInt( 100 ) + 1;
            Arrays.sort(arr);
            System.out.println(arr);
        }
    }

}

【问题讨论】:

  • @dehasi 请删除您的评论,这不是您打印数组的方式

标签: java arrays sorting


【解决方案1】:

Arrays.sort() 没有任何与输出相关的内容,它只是 sorts 一个数组

让你的循环填充数组,然后用sortprint 填充数组Arrays.toString()

int arr[] = new int[10000];
Random rand = new Random();

for (int i=0; i<10000; i++){
    arr[i] = rand.nextInt( 100 ) + 1;
}
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));

逆序排序:

  1. 你可以使用Arrays.sort(arr, Comparator.reverseOrder());,但这需要一个对象数组,它需要Integer arr[] = new Integer[10000];而不是int

  2. 使用List&lt;Integer&gt;而不是en数组,会更容易操作

    List<Integer> list = new ArrayList<>();
    Random rand = new Random();
    for (int i = 0; i < 10000; i++) {
        list.add(rand.nextInt(100) + 1);
    }
    list.sort(Comparator.reverseOrder());
    System.out.println(list);             //[100, 100, 100, 100, 100, 100, 100, 100 ... 
    

【讨论】:

  • 为什么会打印重复的数字?例如:1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3... .....
  • @tidematic 因为这是你数组的内容,你输入 1 到 100 之间的 10k 个元素,有很多重复是正常的
  • 如果我按相反的顺序来做,我将如何使用 Collections.reverseOrder()?
【解决方案2】:

您需要将Arrays.sort(arr); 放在 for 循环之外,并创建另一个循环以在数组排序后打印该数组。 您的代码应如下所示:

import java.util.*;
import java.util.Random;

public class QuestionFour 
{
    public static void main(String[] args) 
    {
        int arr[] = new int[10000];
        Random rand = new Random();

        for (int i=0; i<10000; i++)
        {
            arr[i] = rand.nextInt( 100 ) + 1;

        }

        Arrays.sort(arr);

        for (int i = 0; i < arr.length; i++) {

            System.out.println(arr[i]);
        }
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2015-07-16
    • 1970-01-01
    相关资源
    最近更新 更多