如何从java中的arraylist中选择一个随机项?

Ada*_*dam 4 java random arraylist

我如何从数组列表中的项列表中选择一个随机项,例如;

ArrayList<Integer>  mylist= new ArrayList<Integer>();
mylist.add(19);
mylist.add(154);
mylist.add(112);
mylist.add(15);
mylist.add(112);
Run Code Online (Sandbox Code Playgroud)

目前,我这样做但是因为我需要一遍又一遍地使用它,有没有更短的方法来做到这一点?

Random random = new Random();
Integer randomInt = lista.get(rand.nextInt(lista.size()));
Run Code Online (Sandbox Code Playgroud)

use*_*751 13

您可以创建一个从任何列表中选择随机项的方法,如下所示:

static Random rand = new Random();
static <T> T getRandomItem(List<T> list) {
    return list.get(rand.nextInt(list.size()));
}
Run Code Online (Sandbox Code Playgroud)

Random每次需要随机数时创建一个新对象是一种不好的做法.这只会创建一个并重新使用它.

此外,您可以使用任何类型的列表调用它 - 而不仅仅是ArrayList<Integer>s.

  • 这应该是公认的答案。 (2认同)

小智 6

很简单,把你的代码放在这样的方法中

Random rand; // Global variable

public static int randomItem(Arraylist<Integer> mylist) {
    rand = new Random(); 
    Integer randomInt = lista.get(rand.nextInt(lista.size()));
    return randomInt;
}
Run Code Online (Sandbox Code Playgroud)

并在主方法中将其称为这样;

int selected = randomItem(mylist);
System.out.println(selected);
Run Code Online (Sandbox Code Playgroud)

  • 您已经将rand设置为实例变量,但是是通过static方法设置的,该方法甚至不会编译。每次调用该方法时创建一个新的“ Random”是一个糟糕的主意。 (2认同)