假设我想从数组列表中选择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());
}
但是,如果我想选择不同的独特颜色呢?所以说我选择RED,我怎样才能确保不再选择RED;最好也不要将其从列表中删除。
修改
我找到了有用的东西:
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:
洗牌之后,我明白了: http://i.imgur.com/HPKQNFH.png
谢谢! :)
答案 0 :(得分:1)
使用remove
方法,该方法返回该位置的对象,然后将其删除。
然后你的方法变成:
public static Color getRandomColor() {
return colors.remove(random.nextInt(colors.size());
}
当列表大小为0时,重新插入所有颜色。