我想从0到4随机填充一个包含5个元素的数组列表。
让我说我的ArrayList randomizer = new ArrayList();
我所拥有的是以下内容......
for (int itter = 0; itter < 5; itter++) {
do {
random = randInt(0, 4);
} while (randomizer.contains(random));
if (randomizer.contains(random)) {
} else {
randomizer.add(random);
}
有没有更快的方法将5个整数随机添加到arraylist?谢谢!
答案 0 :(得分:5)
List<Integer> randomizer = Arrays.asList(0, 1, 2, 3, 4);
Collections.shuffle(randomizer);
System.out.println(randomizer);
示例输出:
[3, 4, 2, 0, 1]
附录:为了完整起见,对于手头的问题,使用Arrays.asList
很简洁,但在一般情况下,使用for
循环来填充初始列表更好,更灵活。
答案 1 :(得分:3)
LinkedList<Integer> list = new LinkedList<Integer>();
for(int i=0; i<5; i++) {
list.add(i);
}
Collections.shuffle(list);
答案 2 :(得分:1)
要获得此类随机集合,最好的方法是使用Collections.shuffle
。使用可能的值填充数组,然后进行随机播放并完成。
(你也可以做同样的事情,例如从0,100中挑选10个数字。填充一个包含100个数字的数组然后将其洗牌,然后使用前10个。)
答案 3 :(得分:0)
你可以简单地改组阵列
import java.util.Collections;
import java.util.Arrays;
import java.util.List
public class Test {
public static void main( String args[] ){
List X = Arrays.asList(0, 1, 2, 3, 4);
Collections.shuffle( X );
}
}
答案 4 :(得分:0)
你可以通过创建一个&#34;选择&#34;来加快速度。首先列出(0,1,2,3,4)。然后循环4次(for(int i = 0; i&lt; 4; i ++){with int choice = randInt(0,4-i);在该位置添加选择,从选择中删除该位置列表并继续)。 完成循环后,将最后剩下的选择放入结果中。
不要直接尝试生成一个整数,如果已经选择了该整数则重试