ホームページ  >  記事  >  Java  >  順序を維持しながら、相関する要素を含む 2 つの ArrayList をランダム化するにはどうすればよいでしょうか?

順序を維持しながら、相関する要素を含む 2 つの ArrayList をランダム化するにはどうすればよいでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 03:24:27872ブラウズ

How can you randomize two ArrayLists containing correlated elements while preserving their order?

コンテンツ内で相関する複数の ArrayList をランダム化しながら順序を維持する

はじめに

この質問は、2 つの ArrayList に次のものが含まれる一般的なシナリオに取り組みます。関連する要素ですが、一方のリストをランダム化すると、もう一方のリストも自動的に同じ順序でランダム化されます。解決策を理解するには、問題を詳しく掘り下げ、並列ランダム化の基礎となる概念を調べることが重要です。

問題を理解する

2 つの ArrayList、fileList と imgList が与えられたとします。関連する要素 (例: テキスト ファイルとそれに対応する画像) を表す場合、そのタスクは fileList をランダム化し、それによって同じ方法で imgList を自動的にランダム化することです。これにより、シャッフル後も関連要素のペアが維持されます。

ソリューション

次のコードは、2 つの Random オブジェクトが初期化された Collections.shuffle() メソッドを使用した効果的なソリューションを示しています。同じシードを持つ:

<code class="java">long seed = System.nanoTime();
Collections.shuffle(fileList, new Random(seed));
Collections.shuffle(imgList, new Random(seed));</code>

説明

  • 共通シード: 同じシードを持つ両方の Random オブジェクトを初期化すると、各オブジェクトによって生成される擬似乱数シーケンスは同一です。これにより、両方のリストがまったく同じ順序でシャッフルされるようになります。
  • 別々のコレクション: 2 つの Random オブジェクトを使用することにより、ArrayList は区別されたままとなり、他方に影響を与えることなく独立して操作できます。
  • >
  • ランダム化トリガー: fileList がシャッフルされると、変更により imgList での後続のシャッフルがトリガーされ、関連する要素間の同期順序が維持されます。

出力

提供されたサンプル入力の場合、ランダム化後の出力は次のようになります:

  • fileList = {"M4.txt", "M6.txt", "H3. txt", "M5.txt", "H2.txt", "H1.txt"}
  • imgList = {"e4.jpg", "e6.jpg", "e3.jpg", "e5 .jpg", "e2.jpg", "e1.jpg"}

imgList 内の要素の順序が fileList のランダム化された順序を反映し、関連する要素が効果的にペアになっていることに注目してください。

以上が順序を維持しながら、相関する要素を含む 2 つの ArrayList をランダム化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。