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

からランダムなエントリを選択し、セットが 4 つの要素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]);
}

このデモで試すことができます。実行すると、ランダムに 4 つの色が選択されます。次のような出力が得られます。

Random colors: [orange, red, purple, blue]
于 2013-10-03T20:36:18.100 に答える
0

これには配列を使用しないことを強くお勧めします。必要なものをセットに追加すると、重複管理が処理されます。必要に応じて、いつでも配列に戻すことができます。

于 2013-10-03T20:33:27.813 に答える