4

我正在尝试从另一个数组中制作一组随机颜色。

 String [] colors = new String[6];
         colors[0] = "red";
         colors[1] = "green";
         colors[2] = "blue";
         colors[3] = "yellow";
         colors[4] = "purple";
         colors[5] = "orange";

这是我现在的数组。我想用其中的 4 种颜色制作一个没有重复的新数组。

到目前为止,我知道如何制作随机数组;但是,我不知道如何有效地处理重复项。

4

4 回答 4

2
List<String> colourList = new ArrayList<String>(Arrays.asList(colors));
Collections.shuffle(colourList);
return colourList.subList(0,4).toArray();
于 2013-10-03T20:38:20.600 回答
2

听起来你想要一套。Set 旨在删除重复项。

Set<String> set = ...
for(String s : "a,b,c,d,e,f,d,e,c,a,b".split(","))
    set.add(s);

该集合将具有所有唯一字符串。

于 2013-10-03T20:34:15.913 回答
0

我强烈建议您不要为此使用数组。将您需要的内容添加到 Set 中,它将为您处理重复管理。如果需要,您可以随时转换回数组。

于 2013-10-03T20:33:27.813 回答
0

您可以从 中选择随机条目colors,并将它们添加到 aSet中,直到集合具有四个元素:

Set<String> randomStrings = new HashSet<String>();
Random random = new Random();
while( randomStrings.size() < 4) {
    int index = random.nextInt( colors.length);
    randomStrings.add( colors[index]);
}

您可以在此演示中尝试一下,运行时它会随机选择四种颜色。您将获得类似于以下内容的输出:

Random colors: [orange, red, purple, blue]
于 2013-10-03T20:36:18.100 回答