java - 从数组列表中随机选择唯一的项目

标签 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());
}

但是如果我想选择不同的独特颜色怎么办?那么假设我选择了红色,我怎样才能确保不再选择红色呢?最好也不将其从列表中删除。

编辑:

我发现了一些有用的东西:

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方法,返回该位置的对象,然后将其删除。

list.remove(int i)

那么你的方法就变成了:

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

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

关于java - 从数组列表中随机选择唯一的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24574804/

相关文章:

java - 无法写入文件

java - 如何将自定义类的 ArrayList 转换为 Java 中的 JsonArray?

java - 在 HashMap 中搜索值

php - 从 mysql 数据库检索图像到数组 php

jakarta-ee - 添加到 ArrayList 时 Tomcat 上的运行时异常

java - Feign Client : Post a Map<String, Object> in Request Body => feign.FeignException: status 400 reading MAp

java - Wildfly 8.1.0 Final/JASPIC : ServerAuthModule. 调用 HttpServletRequest.authenticate() 时未调用 validateRequest()

java - Java 中的 PHP session 变量

java - 通过字符串调用方法

Java 迭代问题