我想以相同的方式洗牌两个列表。假设我有两个列表问题和答案。我想以相同的方式对它们进行洗牌,以便问题答案对保持相同。
最佳答案
Java Collections 对于这个问题有一个(令人惊讶的)简单的解决方案:Collections.shuffle(Collection<?>, Random)
与 Random
用相同的种子播种。
List<Integer> quests = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> answers = Arrays.asList(10, 20, 30, 40, 50);
long seed = System.nanoTime();
Collections.shuffle(quests, new Random(seed));
Collections.shuffle(answers, new Random(seed));
System.out.println(quests);
System.out.println(answers);
注意:
额外的优化是危险的。 这不起作用:
long seed = System.nanoTime();
Random rnd = new Random(seed);
Collections.shuffle(quests, rnd);
Collections.shuffle(answers, rnd);
关于java - 如何在java中以相同的方式对两个列表进行洗牌?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10312442/