私は、7つの要素[12, 13, 17, 18, 19, 11, 20]
を含むlistというjavaの整数のArraylistを持っています。ランダムな順序でリストの最後に同じ要素を2回コピーしたいので、最終的に7つの項目ごとに同じ順序で同じ整数を3回(合計21項目)並べ替える必要があります。 Javaでどうすればいいですか?リスト内の項目の位置を複製してランダム化する
答えて
リストをコピーし、繰り返しごとにシャッフルしてください。
final int DUPLICATE_AMOUNT = 3; // if you want the created array 3 times as big as the original
List<Integer> list = getMyList(); //original list
List<Integer> fullRandom = new ArrayList<Integer>();
fullRandom.addAll(list);
for (int i = 1; i < DUPLICATE_AMOUNT; i++) {
List<Integer> randomList = new ArrayList<Integer>();
randomList.addAll(list);
Collections.shuffle(randomList);
fullRandom.addAll(randomList);
}
私の最初のリストはArrayListです。 addAllを実行するには、リストに最初に変換することは可能ですか? – konstantin
技術的には間違いがありますが、あなたが誤解を招くような 'int i = 1'で' DUPLICATE_AMOUNT'を使用しています。 1) "重複"は追加のコピーまたは全体を(あなたが意図した通りに)記述することができます2)人々はあなたの 'int i = 1'を逃して誤解する可能性があるので' int i = 0'に慣れています。あなたの答えには何も問題はありませんが、私は 'ADDITIONAL_COPIES = 2' +' int i = 0'はもっとはっきりしていると思います。 – Aaron
@ Constantin 'ArrayList'は' List'の実装です。キャストする必要はありません。 – Aaron
はわずか2回あなたのリストをコピーして、それをシャッフル:
List<Integer> tempList = new ArrayList<>(yourList);
for(int i = 0; i < 2; i++){
Collections.shuffle(tempList, new Random(System.nanoTime()));
yourList.addAll(tempList);
}
@Aaron Thxを入力してください。私はそれを編集しました。 – Christian
// init your list
List<Integer> initialList = new ArrayList<Integer>();
initialList.add(new Integer(12));
initialList.add(new Integer(13));
initialList.add(new Integer(14));
initialList.add(new Integer(15));
// create a new list that'll contain your random numbers
List<Integer> tripleList = new ArrayList<Integer>();
// triple your values
tripleList.addAll(initialList);
tripleList.addAll(initialList);
tripleList.addAll(initialList);
// randomize their order
Collections.shuffle(tripleList);
// until is empty get the top of the list with this command.
//A random number among your list
tripleList.remove(0);
Collections.shuffle()
を使用して試してみて、初期データリストについては、それを2回呼び出します。
private List<Integer> shufflePositions(List<Integer> data) {
Collections.shuffle(data);
return data;
}
public void solve() {
List<Integer> data = new ArrayList<>();
data.add(12);
data.add(13);
data.add(17);
data.add(18);
data.add(19);
data.add(11);
data.add(20);
List<Integer> result = new ArrayList<>();
result.addAll(data);
result.addAll(shufflePositions(new ArrayList<>(data)));
result.addAll(shufflePositions(new ArrayList<>(data)));
}
はこれを試してみてください。
List<Integer> integers = new ArrayList<>(Arrays.asList(12, 13, 17, 18, 19, 11, 20));
for(int i=0; i<2; i++) {
List<Integer> IntegersClone = new ArrayList<>(integers);
Collections.shuffle(IntegersClone);
integers.addAll(IntegersClone);
}
//Output : [12, 13, 17, 18, 19, 11, 20, 19, 17, 12, 11, 20, 18, 13, 20, 12, 19, 11, 18, 13, 13, 11, 17, 18, 19, 12, 17, 20]
System.out.print(integers);
- 1. Knockout.js内のForeachリスト項目をランダム化
- 2. リストの項目をリスト内包で複数回複製する
- 3. ランダムな位置にリストの項目を分割しました
- 4. 複製リストの項目をn回
- 5. 自己複製Scammer Spammer - ランダム化ポップアップ位置付け(Chrome)
- 6. どのようにJavaのリスト内の項目を複製する
- 7. RecyclerView複製項目
- 8. リスト項目の画像は、他のリスト項目の他のテキストの位置を反映します。
- 9. 複雑なグループ化リストの項目
- 10. 他のリストの重複した項目を使って項目内のリストを削除する
- 11. onPrepareOptionsMenu ActionBar内の項目を複製します
- 12. アイソトープ内の項目の絶対位置を無効にする
- 13. Android Spinner重複した項目は、最初に重複した項目の位置のみを返します。
- 14. リスト内の複数のリスト内の項目を確認してください
- 15. リスト項目の順序をページ内でランダム化する際に欠落している要素
- 16. 奇妙な振る舞い:Java Comparatorがリスト項目をランダム化
- 17. ボタンをクリックすると、Androidがリスト項目の位置を取得します
- 18. jQueryフィルタ - 項目位置
- 19. 垂直スクロールバーの位置をリスト内の選択した項目に応じて設定します
- 20. リスト内の項目を別のリストの項目に再帰的に置換する
- 21. 位置の項目を中心に
- 22. リストから項目をランダムに選択
- 23. は、リスト構造のリストに同じ項目の特定の位置を反転
- 24. Pythonの:リスト内の重複する項目を削除
- 25. リスト内の項目のPreg_match
- 26. jsドロップダウンサブメニューの項目の位置付け
- 27. 配列の値のランダム化位置
- 28. リスト項目+フィールドデータソース内
- 29. anglejsのキャンバス上の位置に基づいてリスト項目をソート
- 30. コンボボックス内の選択した項目にマウスポインタの位置を設定します。
私はあなたの質問を得ることはありません、あなたは21のintリストで終わるつもりですか、あなたは無作為に選んだ数字を別の場所にコピーしていますか? – rakwaht
私たちがそれらをすべて複製してからランダム化するか、それを複製して同時にランダム化するかどうかは重要です。 –
あなたは 'Collections.shuffle(copyList);を実行する別のarraylistに要素をコピーすることができます。その後、これらのシャッフルされたコピーを元のarraylistに追加します。 – matoni