Maison  >  Article  >  Java  >  Comment randomiser deux ArrayLists contenant des éléments corrélés tout en préservant leur ordre ?

Comment randomiser deux ArrayLists contenant des éléments corrélés tout en préservant leur ordre ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 03:24:27872parcourir

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

Préserver l'ordre tout en randomisant plusieurs ArrayLists corrélées dans le contenu

Introduction

Cette question aborde un scénario courant dans lequel deux ArrayLists contiennent éléments liés, mais la randomisation d'une liste devrait automatiquement randomiser l'autre dans le même ordre. Pour comprendre la solution, il est crucial d'approfondir le problème et d'explorer le concept sous-jacent de randomisation parallèle.

Comprendre le problème

Étant donné deux ArrayLists, fileList et imgList, représentant des éléments associés (par exemple des fichiers texte et leurs images correspondantes), la tâche consiste à randomiser fileList, randomisant ainsi automatiquement imgList de la même manière. Cela garantit que les éléments associés restent appariés même après la lecture aléatoire.

Solution

Le code suivant présente une solution efficace utilisant la méthode Collections.shuffle() avec deux objets Random initialisés avec la même graine :

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

Explication

  • Graine commune : L'initialisation des deux objets aléatoires avec la même graine garantit que le la séquence pseudo-aléatoire générée par chaque objet est identique. Cela garantit que les deux listes sont mélangées exactement dans le même ordre.
  • Collections séparées : En utilisant deux objets aléatoires, les ArrayLists restent distinctes et peuvent être manipulées indépendamment sans affecter l'autre.
  • Déclencheur de randomisation :Une fois que fileList est mélangé, les modifications déclenchent un mélange ultérieur dans imgList, préservant l'ordre synchronisé entre les éléments associés.

Sortie

Pour l'exemple d'entrée fourni, la sortie après randomisation sera la suivante :

  • 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">

Remarquez comment l'ordre des éléments dans imgList reflète l'ordre aléatoire de fileList, associant efficacement les éléments associés.

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