Maison  >  Article  >  Java  >  Comment mélanger deux ArrayLists associées tout en conservant leur correspondance ?

Comment mélanger deux ArrayLists associées tout en conservant leur correspondance ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 03:13:02394parcourir

How to Shuffle Two Related ArrayLists While Maintaining Their Correspondence?

Préserver les relations tout en randomisant les ArrayLists

Lorsque vous travaillez avec deux ArrayLists liées, il peut être essentiel de maintenir la relation entre leurs éléments après la randomisation. Cela devient particulièrement important lorsque l'ordre d'une ArrayList affecte l'autre.

Considérez le scénario décrit dans la question, où nous avons deux ArrayLists : fileList et imgList, chacune contenant un nom de fichier et un nom d'image correspondants. Voyons comment randomiser fileList tout en nous assurant que imgList suit le même modèle de randomisation.

Le défi

Le défi consiste à garantir que l'ordre des éléments dans imgList s'aligne sur l'ordre mélangé de fileList. Collections.shuffle() est couramment utilisé pour la randomisation, mais il génère un nouvel arrangement aléatoire d'éléments, ce qui rend difficile la préservation de la relation d'origine.

La solution : le brassage synchronisé

Pour résoudre ce problème, nous pouvons utiliser Collections.shuffle() deux fois, à chaque fois avec un objet Random initialisé avec la même graine. La valeur de départ garantit que les deux objets Random produisent la même séquence de nombres aléatoires.

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

En utilisant la même graine pour les deux objets Random, nous garantissons que fileList et imgList sont mélangés dans le même ordre. Cela maintient la relation entre les éléments correspondants, leur permettant d'être utilisés ensemble sans aucune divergence.

Exemple de sortie

Après avoir appliqué la solution, la fileList résultante pourrait ressembler à this :

fileList = {"M4.txt", "M6.txt", "H3.txt", "M5.txt", "H2.txt", "H1.txt"}

Par conséquent, imgList sera automatiquement randomisé pour correspondre au nouvel ordre de fileList :

imgList = {"e4.jpg", "e6.jpg", "e3.jpg", "e5.jpg", "e2.jpg", "e1.jpg".}

Cela garantit que l'image "e1.jpg" correspond toujours à "H1 .txt" et ainsi de suite, ce qui facilite le travail avec les deux ArrayLists en harmonie malgré la randomisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn