从arraylist中挑选随机的独特物品

时间:2014-07-04 12:52:27

标签: java arraylist

假设我想从数组列表中选择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

谢谢! :)

1 个答案:

答案 0 :(得分:1)

使用remove方法,该方法返回该位置的对象,然后将其删除。

list.remove(int i)

然后你的方法变成:

public static Color getRandomColor() {
    return colors.remove(random.nextInt(colors.size());
}

当列表大小为0时,重新插入所有颜色。