📜  在一个集合中分配一个随机数而不替换 java - Java (1)

📅  最后修改于: 2023-12-03 15:07:56.941000             🧑  作者: Mango

在一个集合中分配一个随机数而不替换

有时候,我们需要在一个集合中选取一个随机数,并且不希望它被替换或者出现重复的情况。在Java中,我们可以使用以下几种方法来实现这个目标。

方法一:使用Collections.shuffle()方法

我们可以使用Collections.shuffle()方法来打乱集合中元素的顺序,然后将第一个元素作为选中的随机数。由于shuffle()方法是对原始集合进行打乱操作,因此需要使用一个副本来避免改变原始集合的顺序。

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.shuffle(list);
int randomNumber = list.get(0);

这里我们使用了Arrays.asList()方法来创建一个包含指定元素的List集合。在实际应用中,我们可以使用任何实现了List接口的集合。

方法二:使用Random.nextInt()方法

我们也可以使用Random类的nextInt()方法来生成一个在指定范围内的随机数。通过使用集合的长度作为随机数的范围,我们可以确保随机数不会超出集合的范围。

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Random random = new Random();
int randomNumber = list.get(random.nextInt(list.size()));

这里我们创建了一个Random对象来生成随机数,并且使用了List的size()方法来获取集合中元素的数量。

方法三:使用ThreadLocalRandom.nextInt()方法

在Java7版本中,Java API引入了ThreadLocalRandom类,它是Random的线程安全版本。与Random类相比,ThreadLocalRandom具有更快的性能和更好的随机性能。

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
int randomNumber = list.get(ThreadLocalRandom.current().nextInt(list.size()));

这里我们创建了一个ThreadLocalRandom对象来生成随机数,并且使用List的size()方法来获取集合中元素的数量。

无论使用哪种方法,每次执行都会生成一个不同的随机数,并且不会修改集合中的元素。