检查未重复的随机数

时间:2018-11-26 17:40:22

标签: java loops random

我有一个返回数字的方法:

  public String getNum()
   {
    Random random = new Random();
    return random.nextInt(1000) + "";
   }

我有这个存储对象的方法

public void store(User user)
{
  String str = getNum();
  user.setIdCode(str);
  for (User users: userList)
  { 
    if(users.getId() == user.getId())
{
user.setIdCode(getNum);
}

  }

}

如果ID激动,则重新设置ID。可以肯定地检查该ID是否第一次存在,但是第二次设置该ID大约如何。可能会重复相同的数字。同时,我们不能陷入无限循环。

1 个答案:

答案 0 :(得分:0)

您可以尝试的是在Set中添加一些随机数,然后在需要时分别使用它们。

我的意思是,如果您每次都尝试获取一个随机数,则可以一次存储一些随机数,然后在需要时逐个检索它们。

在代码中,将其放入称为storeRandomNumbers()的某种方法中,并在程序的开头进行调用。另外,将Set声明为全局变量。

您还可以创建一个单独的变量来跟踪已用完了多少个随机数,并使用它从Set中检索下一个随机数。

代码看起来像这样(根据您的需要进行更改):

Random rand = new Random();
Set<Integer> uniqueRandoms = new HashSet<>();
while (uniqueRandoms.size()<10){
    uniqueRandoms.add(rand.nextInt(11));
}
for (Integer i : uniqueRandoms){
    // System.out.print(i+" ");
    // retrieve them from here and use them whenever you want
}

编辑: 是的,因为@Andreas给出了建议的链接,所以您不要将字符串与==进行比较,而是使用equals()方法。

相关问题