首页  >  文章  >  Java  >  如何在保持对应关系的同时打乱两个相关的 ArrayList?

如何在保持对应关系的同时打乱两个相关的 ArrayList?

Barbara Streisand
Barbara Streisand原创
2024-10-29 03:13:02394浏览

How to Shuffle Two Related ArrayLists While Maintaining Their Correspondence?

随机化 ArrayList 时保留关系

使用两个相关的 ArrayList 时,在随机化后维护其元素之间的关系至关重要。当一个 ArrayList 的顺序影响另一个 ArrayList 时,这一点变得尤为重要。

考虑问题中描述的场景,其中我们有两个 ArrayList:fileList 和 imgList,每个都包含相应的文件名和图像名称。让我们看看如何随机化 fileList,同时确保 imgList 遵循相同的随机化模式。

挑战

挑战在于确保元素的顺序imgList 与 fileList 的打乱顺序对齐。 Collections.shuffle() 常用于随机化,但它会生成新的随机排列的元素,从而很难保留原始关系。

解决方案:同步洗牌

为了解决这个问题,我们可以使用 Collections.shuffle() 两次,每次都使用使用相同种子初始化的 Random 对象。种子值保证两个 Random 对象产生相同的随机数序列。

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

通过对两个 Random 对象使用相同的种子,我们确保 fileList 和 imgList 以相同的顺序进行混洗。这维护了相应元素之间的关系,使它们可以一起使用而不会出现任何差异。

示例输出

应用解决方案后,生成的 fileList 可能如下所示this:

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

因此,imgList 将自动随机化以匹配 fileList 的新顺序:

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

这确保“e1.jpg”图像仍然对应于“H1” .txt”等,尽管是随机化的,但仍可以轻松地协调使用两个 ArrayList。

以上是如何在保持对应关系的同时打乱两个相关的 ArrayList?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn