Préserver les relations tout en randomisant les listes d'arraylists
lorsque vous travaillez avec deux listes de crates connexes, 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'un ArrayList affecte l'autre.
Considérez le scénario décrit dans la question, où nous avons deux listes de table: FileList et Imglist, contenant chacun un nom de fichier et un nom d'image correspondant. Découvrons comment nous pouvons randomiser FileList tout en veillant à ce qu'Imglist suit le même modèle de randomisation.
Le défi
Le défi réside dans la garantie que l'ordre des éléments dans Imglist s'aligne sur l'ordre shufflé de FileList. Collection.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 originale.
La solution: Synchronisé Shuffling
pour résoudre ce problème, nous pouvons utiliser les collections.shuffle () deux fois avec un objet aléatoire avec un objet aléatoire initial avec le même problème. La valeur de graine garantit que les deux objets aléatoires produisent la même séquence de nombres aléatoires.
long seed = System.nanoTime();
Collections.shuffle(fileList, new Random(seed));
Collections.shuffle(imgList, new Random(seed));
En utilisant la même graine pour les deux objets aléatoires, nous nous assurons que FileList et Imglist sont mélangés dans le même ordre. Cela maintient la relation entre les éléments correspondants, ce qui leur permet d'être utilisés sans aucune divergence. "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 "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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3