< prev index next > test/jdk/java/util/Collections/Shuffle.java
Print this page
/*
! * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
/*
! * Copyright (c) 2023, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
/*
* @test
* @bug 8294693
* @summary Basic test for Collections.shuffle
* @key randomness
+ * @library /test/lib
*/
+ import jdk.test.lib.valueclass.VClass;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
static final int N = 100;
public static void main(String[] args) {
test(new ArrayList<>());
test(new LinkedList<>());
+ testValue();
}
static void test(List<Integer> list) {
for (int i = 0; i < N; i++) {
list.add(i);
checkRandom(list, l -> Collections.shuffle(l, new Random(1)));
RandomGenerator.JumpableGenerator generator = RandomGenerator.JumpableGenerator.of("Xoshiro256PlusPlus");
checkRandom(list, l -> Collections.shuffle(l, generator.copy()));
}
+ static void testValue() {
+ List<VClass> values = new ArrayList<>();
+ for (int i = 0; i < N; i++) values.add(new VClass(i, new int[] { i }));
+ Collections.shuffle(values, new Random(1));
+ if (values.size() != N) throw new RuntimeException("value shuffle size");
+ for (int i = 0; i < N; i++)
+ if (Collections.frequency(values, new VClass(i, new int[] { i })) != 1)
+ throw new RuntimeException("value shuffle lost " + i);
+ }
+
private static void checkRandom(List<Integer> list, Consumer<List<?>> randomizer) {
list.sort(null);
randomizer.accept(list);
ArrayList<Integer> copy = new ArrayList<>(list);
list.sort(null);
< prev index next >