随机化ArrayList

时间:2017-07-10 20:27:12

标签: java list arraylist random

我想创建一个测验,我在MainActivity中的ArrayList中有20个项目。每次单击打开DetailActivity时,如何从ArrayList中选择6个随机项,传递随机项?

P.S我知道如何在活动之间导航并通过Intents传递数据,我只想知道如何从ArrayList中获取6个随机项。

4 个答案:

答案 0 :(得分:3)

您可以使用ArrayList

随机播放Collections.shuffle
long seed = System.nanoTime();
Collections.shuffle(myArray, new Random(seed));

要获得6个项目,您可以使用myArray.subList(0, 6)

答案 1 :(得分:3)

使用Random对象:

Random random = new Random();
myList.get(random.nextInt(myList.size())));

或者你也可以在Collections.shuffle(myList);下使用Random,但是当它迭代列表的所有元素时应该有轻微的开销。

在您的情况下,由于您需要检索6个不同的元素,因此您应该使用Collections.shuffle(myList);,因为它可以使用myList.subList(0,6);检索6个不同的元素。
通过使用myList.get(random.nextInt(myList.size())));迭代6次,您可以多次使用相同的元素。

答案 2 :(得分:1)

ArrayList<Integer>  list = new ArrayList<Integer>();
lista.add(1);
lista.add(2);
lista.add(1);
lista.add(3);
lista.add(4);
lista.add(5);
lista.add(6);
.
.
.

Collections.shuffle(list);

现在你可以得到索引0到5及其随机

答案 3 :(得分:0)

要在0list.size()之间生成数字,请使用:

int index = ThreadLocalRandom.current().nextInt(list.size());

拥有随机索引,您可以从列表中获取元素:

list.get(index);