Home  >  Article  >  Java  >  How to Shuffle Two Related ArrayLists While Maintaining Their Correspondence?

How to Shuffle Two Related ArrayLists While Maintaining Their Correspondence?

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

How to Shuffle Two Related ArrayLists While Maintaining Their Correspondence?

Preserving Relationships While Randomizing ArrayLists

When working with two related ArrayLists, it can be essential to maintain the relationship between their elements after randomization. This becomes particularly important when one ArrayList's order affects the other.

Consider the scenario described in the question, where we have two ArrayLists: fileList and imgList, each containing a corresponding file name and image name. Let's find out how we can randomize fileList while ensuring that imgList follows the same randomization pattern.

The Challenge

The challenge lies in ensuring that the order of the elements in imgList aligns with the shuffled order of fileList. Collections.shuffle() is commonly used for randomization, but it generates a new random arrangement of elements, making it difficult to preserve the original relationship.

The Solution: Synchronized Shuffling

To solve this problem, we can use Collections.shuffle() twice, each time with a Random object initialized with the same seed. The seed value guarantees that both Random objects produce the same sequence of random numbers.

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

By using the same seed for both Random objects, we ensure that fileList and imgList are shuffled in the same order. This maintains the relationship between the corresponding elements, allowing them to be used together without any discrepancies.

Example Output

After applying the solution, the resulting fileList might look like this:

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

Consequently, imgList will be automatically randomized to match the new order of fileList:

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

This ensures that the "e1.jpg" image still corresponds to "H1.txt" and so on, making it easy to work with the two ArrayLists in harmony despite the randomization.

The above is the detailed content of How to Shuffle Two Related ArrayLists While Maintaining Their Correspondence?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn