我想创建一个测验,我在MainActivity中的ArrayList中有20个项目。每次单击打开DetailActivity时,如何从ArrayList中选择6个随机项,传递随机项?
P.S我知道如何在活动之间导航并通过Intents传递数据,我只想知道如何从ArrayList中获取6个随机项。
答案 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)
要在0
和list.size()
之间生成数字,请使用:
int index = ThreadLocalRandom.current().nextInt(list.size());
拥有随机索引,您可以从列表中获取元素:
list.get(index);