Heim >Java >javaLernprogramm >Wie mischt man zwei verwandte Array-Listen und behält dabei ihre Korrespondenz bei?
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!