从另一个数组中创建一个随机字符串数组。

时间:2013-10-03 20:31:29

标签: java arrays

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

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

截至目前,这是我的阵列。我想制作一个 new 数组,只有4种颜色没有重复。

到目前为止,我知道如何制作一系列的randoms;但是,我不知道如何有效地处理重复。

4 个答案:

答案 0 :(得分:2)

听起来你想要一套。 Set用于删除重复项。

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

这个集合将包含所有唯一的字符串。

答案 1 :(得分:2)

List<String> colourList = new ArrayList<String>(Arrays.asList(colors));
Collections.shuffle(colourList);
return colourList.subList(0,4).toArray();

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您只需从colors中选择随机条目,然后将其添加到Set中,直到该集合包含四个元素:

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

您可以在this demo中进行试用,在运行时随意选择四种颜色。您将得到类似于:

的输出
Random colors: [orange, red, purple, blue]