在java中,从字符串数组的arraylist中选择不同的随机元素

tag5nh1u  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(400)

我是菜鸟。我必须从一个包含字符串数组的arraylist中随机选择不同的元素。我尝试了几种不同的方法,但是每次都选择相同的数组。

public static void RandomSchedules(ArrayList<String[]> list)
{
    Random randomizer = new Random();
    for(int i=1; i<11; i++)
   {

    String[] random = list.get(new Random().nextInt(list.size()));
    System.out.println("Random Schedule " +  ":" + Arrays.toString(random));
    }
}

我在上面的代码中也尝试过这个。

String[] random = list.get(randomizer.nextInt(list.size()));

但结果是一样的。
这是我从堆栈溢出尝试的另一种方法

public static List<String[]> pickNRandom(ArrayList<String[]> lst, int n) {
List<String[]> copy = new LinkedList<String[]>(lst);
Collections.shuffle(copy);
return copy.subList(0, n);
 }

我将上述函数调用为,

List<String[]> randomPicks = pickNRandom(lst, 10);

有谁能指导我如何得到不同的元素吗。

gc0ot86w

gc0ot86w1#

不使用随机化器对象,但每次在循环中创建一个新对象。因此,使用您创建的一个(避免每次新的随机调用)。尝试:

public static void RandomSchedules(ArrayList<String[]> list)
{
    Random randomizer = new Random(System.currentTimeMillis());
    for(int i=1; i<11; i++)
    {
        String[] random = list.get(randomizer.nextInt(list.size()));
        System.out.println("Random Schedule " +  ":" + Arrays.toString(random));
    }
}

相关问题