2016-09-18 20 views
2
ArrayList<String> listArray = new ArrayList<String>(); 

private void AddToListActionPerformed(java.awt.event.ActionEvent evt) {           
    String addTo = txtAdd.getText(); 
    listArray.add(addTo); 
}           

private void randomPickerActionPerformed(java.awt.event.ActionEvent evt) {           

} 

ボタンrandomPickerでは、私が配列に追加したランダムな文字列の1つを出力したいと思います。あなたは私がそのボタンの中に書き込むべきもので私を助けてくれますか?作成リストからランダム化

私が試した:

String random = (listArray[new Random().nextInt(listArray.length)]); 
    System.out.println(random); 

をそれは私があなたがあなたが配列の構文を使用しているこの

Random ran = new Random(); 
String random = (String) list.get(ran.nextInt(list.size())); 
System.out.println("random :"+rdom); 
+0

['Collections.shuffle(List )'](https://docs.oracle.com/javase/8/docs/api/java)を呼び出してください。 /util/Collections.html#shuffle-java.util.List-)** once **、通常は繰り返し実行されます。 –

+0

シャッフルでシンボルが見つからない – tryAnroid

答えて

0

を使用することができなかったと述べ、 listArrayは実際にはです(あなたは他のところでlist.add()と思っています)。あなたはこのように、ArrayListのgetメソッドを呼び出す必要があります。

String random = listArray.get(new Random().nextInt(listArray.size()));

お知らせsize()方法は、lengthプロパティは配列のためだけです。

+0

ありがとう、うまくいった! – tryAnroid

1

String random = (listArray[new Random().nextInt(listArray.length)]);

のように行うことができますnextInt

+0

あなたの説明をありがとう、私はちょうどあなたのコメントを読んで多くを学んだ:) – tryAnroid

0

これは、あなたがこのものをしたいものに少し依存します。しかし、一般的には2つのことがあります。 ArrayListでランダムなインデックスを選択するには、クラスRandomを使用します。

また、コレクションjava.util.Collections.shuffle()メソッドを使用することもできます。

public static void shuffle(List<?> list) 

リスト全体をシャッフルします。

Random random = new Random(); 
int index = random.nextInt(listArray.size()); 
String random = listArray.get(index); 

私はあなたがC++から来ていると思います。 javaのArrayListsは、実際の配列を基にしています。しかし、彼らはアクセス可能ではありません。 .lengthは呼び出しませんが、.size()

+0

ええ、size()の代わりにlength()、それはJavaで同じことを意味すると思ったも: – tryAnroid

+0

それはそこにあるが、隠されています。 String []配列は配列クラスを返しますが、Stringには一度も見えないポインタが含まれています。だからすべてがカプセル化されています。あなたは時間の複雑さのために配列のように扱います。 – Tatarize

関連する問題