Java 我创建了500k数组大小,我想用随机数填充它,而不是重复

Java 我创建了500k数组大小,我想用随机数填充它,而不是重复,java,Java,我需要用500000整数填充这个数组,这是我的代码 public class lab_02 { public static void main(String[] args) { // 500000 Array Array array = new Array (500000); } } 我不知道使用循环或递归应该做什么 谢谢1)如果您不需要副本,请使用一套 Set<Integer> intSet = new HashSet<I

我需要用500000整数填充这个数组,这是我的代码

public class lab_02 {

    public static void main(String[] args) {
       // 500000 Array
        Array array = new Array (500000);
   }

  }
我不知道使用循环或递归应该做什么 谢谢

1)如果您不需要副本,请使用一套

Set<Integer> intSet = new HashSet<Integer>();
Set intSet=new HashSet();
2) 然后,您可以将随机生成的int添加到集合中

while (intSet.size() < DESIRED_SIZE) {
//generate the randomInteger - DESIRED_SIZE is 500k in your case 
intSet.add(randomInteger);
}
while(intSet.size()<所需大小){
//生成随机整数-在您的情况下,所需的_大小为500k
添加(随机整数);
}

这里棘手的部分是确保唯一性。检查项目是否唯一可能会很昂贵。因为OP没有说明随机数的界限是什么,所以我假设这个解的最小值为1,最大值为500000

一种方法是按0到500000的顺序输入数字,然后洗牌数组

int size = 500000;
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < size; i++) {
    list.add(i);
}
Collections.shuffle(list);
for (int i = 0; i < size; i++) {
    System.out.println(list.get(i));
}
int size=500000;
列表=新的ArrayList();
对于(int i=0;i
请完成回答:这是一个很好的开始。最后,添加
while(intSet.size()<500_000){…}
。我认为问题是关于创建“数组”而不是如何填充它:p问题明确地说“需要填充”;)这里的一个问题是,如果随机数的边界是1到500000,那么在填充集合时,由于重复,您将不得不生成远远超过500000个随机数。你试过这个吗,花了多长时间。随机数的边界需要多长时间。
Array
似乎是一个自定义类(来自您,您的老师),但不是一个标准类。你应该告诉我们有什么方法可以添加元素。你想要的随机数的界限是什么?例如,最小值为1,最大值为500000。我在任何地方都看不到“从1到500000的序列号”。我读的是“随机数”。如果你在最后遍历数字列表,它们将以随机顺序排列。OP没有说明随机数的界限是什么。如果边界为最小1和最大500000,我建议的解决方案将有效。是的,“随机顺序”,但不是“随机数”。对,但如果边界为最小1和最大500000,并且它们都必须是唯一的,那么您必须拥有从1到500000的所有数。