假设我想从数组列表中随机选择 5 种颜色,如下所示:
static final List<Color> colors = new ArrayList<Color>();
static {
colors.add(Color.RED);
colors.add(Color.BLUE);
colors.add(Color.GREEN);
}
这很简单,我就可以做到这一点......
static Random random = new Random();
public static Color getRandomColor() {
return colors.get(random.nextInt(colors.size());
}
但是如果我想选择不同的独特颜色怎么办?那么假设我选择了红色,我怎样才能确保不再选择红色呢?最好也不将其从列表中删除。
编辑:
我发现了一些有用的东西:
Color generatedColor = Theme.randomColor();
for (int i = 0; i < pie.segments.size(); i++) {
if (generatedColor == pie.segments.get(i).getColor()) {
generatedColor = Theme.randomColor();
return;
}
}
this.color = generatedColor;
但是有人建议我将它们全部删除并在生成完它们后重新添加,我应该采用哪种方法?
编辑2:
经过洗牌后,我得到了这个: /image/dSnvP.png
谢谢! :)
最佳答案
使用remove
方法,返回该位置的对象,然后将其删除。
那么你的方法就变成了:
public static Color getRandomColor() {
return colors.remove(random.nextInt(colors.size());
}
当列表大小为0时,重新插入所有颜色。
关于java - 从数组列表中随机选择唯一的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24574804/