Heim  >  Artikel  >  Java  >  Wie mischt man zwei verwandte Array-Listen und behält dabei ihre Korrespondenz bei?

Wie mischt man zwei verwandte Array-Listen und behält dabei ihre Korrespondenz bei?

Barbara Streisand
Barbara StreisandOriginal
2024-10-29 03:13:02394Durchsuche

How to Shuffle Two Related ArrayLists While Maintaining Their Correspondence?

Beibehalten von Beziehungen beim Randomisieren von Array-Listen

Bei der Arbeit mit zwei verwandten Array-Listen kann es wichtig sein, die Beziehung zwischen ihren Elementen nach der Randomisierung beizubehalten. Dies wird besonders wichtig, wenn sich die Reihenfolge einer ArrayList auf die andere auswirkt.

Betrachten Sie das in der Frage beschriebene Szenario, in dem wir zwei ArrayLists haben: fileList und imgList, die jeweils einen entsprechenden Dateinamen und einen Bildnamen enthalten. Lassen Sie uns herausfinden, wie wir fileList randomisieren und gleichzeitig sicherstellen können, dass imgList demselben Randomisierungsmuster folgt.

Die Herausforderung

Die Herausforderung besteht darin, sicherzustellen, dass die Reihenfolge der Elemente in imgList richtet sich nach der gemischten Reihenfolge von fileList. Collections.shuffle() wird häufig für die Randomisierung verwendet, erzeugt jedoch eine neue zufällige Anordnung von Elementen, was es schwierig macht, die ursprüngliche Beziehung beizubehalten.

Die Lösung: Synchronisiertes Shuffling

Um dieses Problem zu lösen, können wir Collections.shuffle() zweimal verwenden, jedes Mal mit einem Random-Objekt, das mit demselben Startwert initialisiert wird. Der Startwert garantiert, dass beide Random-Objekte die gleiche Folge von Zufallszahlen erzeugen.

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

Durch die Verwendung des gleichen Startwerts für beide Random-Objekte stellen wir sicher, dass fileList und imgList in derselben Reihenfolge gemischt werden. Dadurch bleibt die Beziehung zwischen den entsprechenden Elementen erhalten, sodass sie ohne Diskrepanzen zusammen verwendet werden können.

Beispielausgabe

Nach dem Anwenden der Lösung könnte die resultierende Dateiliste so aussehen dies:

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

Folglich wird imgList automatisch zufällig ausgewählt, um der neuen Reihenfolge von fileList zu entsprechen:

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

Dadurch wird sichergestellt, dass das Bild „e1.jpg“ immer noch „H1“ entspricht .txt“ und so weiter, sodass es trotz der Randomisierung einfach ist, mit den beiden ArrayLists harmonisch zu arbeiten.

Das obige ist der detaillierte Inhalt vonWie mischt man zwei verwandte Array-Listen und behält dabei ihre Korrespondenz bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn