ホームページ >Java >&#&チュートリアル >対応関係を維持しながら 2 つの関連する ArrayList をシャッフルするにはどうすればよいですか?
ArrayList のランダム化中に関係を維持する
関連する 2 つの ArrayList を操作する場合、ランダム化後にそれらの要素間の関係を維持することが重要な場合があります。これは、一方の ArrayList の順序が他方の ArrayList に影響を与える場合に特に重要になります。
質問で説明されているシナリオを考えてみましょう。ここでは、fileList と imgList という 2 つの ArrayList があり、それぞれに対応するファイル名と画像名が含まれています。 imgList が同じランダム化パターンに従うようにしながら、fileList をランダム化する方法を見てみましょう。
課題
課題は、要素の順序を確実に保つことにあります。 imgList は fileList のシャッフルされた順序と一致します。 Collections.shuffle() はランダム化によく使用されますが、要素の新しいランダムな配置が生成されるため、元の関係を維持することが困難になります。
解決策: 同期シャッフル
この問題を解決するには、Collections.shuffle() を 2 回使用します。毎回、同じシードで初期化された Random オブジェクトを使用します。シード値は、両方の Random オブジェクトが同じ乱数シーケンスを生成することを保証します。
<code class="java">long seed = System.nanoTime(); Collections.shuffle(fileList, new Random(seed)); Collections.shuffle(imgList, new Random(seed));</code>
両方の Random オブジェクトに同じシードを使用することにより、fileList と imgList が同じ順序でシャッフルされることが保証されます。これにより、対応する要素間の関係が維持され、矛盾することなく一緒に使用できるようになります。
出力例
ソリューションを適用すると、結果の fileList は次のようになります。 this:
fileList = {"M4.txt", "M6.txt", "H3.txt", "M5.txt", "H2.txt", "H1.txt"}
その結果、imgList は fileList:
imgList = {"e4.jpg", "e6.jpg", "e3.jpg", "e5.jpg", "e2.jpg", "e1.jpg".}
の新しい順序に一致するように自動的にランダム化されます。これにより、「e1.jpg」画像が引き続き「H1」に対応することが保証されます。 .txt" などを使用すると、ランダム化にもかかわらず 2 つの ArrayList を調和して操作することが簡単になります。
以上が対応関係を維持しながら 2 つの関連する ArrayList をシャッフルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。