【问题标题】:How to pick a random item from a arraylist in java? [duplicate]如何从java中的arraylist中选择一个随机项目? [复制]
【发布时间】:2015-05-04 15:38:56
【问题描述】:

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

ArrayList<Integer>  mylist= new ArrayList<Integer>();
mylist.add(19);
mylist.add(154);
mylist.add(112);
mylist.add(15);
mylist.add(112);

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

Random random = new Random();
Integer randomInt = lista.get(rand.nextInt(lista.size()));

【问题讨论】:

  • System.currentTimeMillis()%lista.size()

标签: java random arraylist


【解决方案1】:

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

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

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

此外,您可以使用任何类型的列表调用它 - 不仅仅是 ArrayList&lt;Integer&gt;s。

【讨论】:

  • 这应该是公认的答案。
【解决方案2】:

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

Random rand; // Global variable

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

并在你的 main 方法中这样调用它;

int selected = randomItem(mylist);
System.out.println(selected);

【讨论】:

  • 谢谢,这就是我想要的
  • 您已将rand 设为实例变量,但您是通过static 方法设置它,该方法甚至无法编译。每次调用该方法时都创建一个新的Random 是一个糟糕的主意。
猜你喜欢
  • 1970-01-01
  • 2017-09-20
  • 2021-07-06
  • 2011-02-28
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
相关资源
最近更新 更多