|
|
@@ -6,19 +6,20 @@ import java.util.List;
|
|
|
import java.util.Random;
|
|
|
|
|
|
public class RandomUtil {
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 从指定列表中随机抽取若干个唯一元素 (不允许重复)
|
|
|
*
|
|
|
* @param originalList 原始数据列表
|
|
|
* @param count 要抽取的数量
|
|
|
+ *
|
|
|
* @return 随机抽取的子列表
|
|
|
*/
|
|
|
public static <T> List<T> uniqueRandom(List<T> originalList, int count) {
|
|
|
if (originalList == null || originalList.isEmpty() || count <= 0) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 创建副本以避免修改原始列表
|
|
|
List<T> copyList = new ArrayList<>(originalList);
|
|
|
// 打乱顺序
|
|
|
@@ -26,20 +27,21 @@ public class RandomUtil {
|
|
|
// 取出前 count 个
|
|
|
return copyList.subList(0, Math.min(count, copyList.size()));
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 从指定列表中随机抽取若干个元素(允许重复)
|
|
|
*
|
|
|
* @param originalList 原始数据列表
|
|
|
* @param count 要抽取的数量
|
|
|
+ *
|
|
|
* @return 随机抽取的子列表
|
|
|
*/
|
|
|
public static <T> List<T> repeatedRandom(List<T> originalList, int count) {
|
|
|
if (originalList == null || originalList.isEmpty() || count <= 0) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
List<T> result = new ArrayList<>();
|
|
|
for (int i = 0; i < count; i++) {
|
|
|
int index = new Random().nextInt(originalList.size());
|
|
|
@@ -47,5 +49,5 @@ public class RandomUtil {
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|