package com.tongtu.styh.utils;
import com.tongtu.styh.bean.model.jxpj.xmcq.CQResultPojo;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 抽取规则工具类
*/
public class ExtractUtil {
/**
* @param list 抽取集合
* @param scale 占比
* @return
*/
public static List<CQResultPojo> getResult(List<CQResultPojo> list, BigDecimal scale) {
int size = list.size();
if (size == 0) {
return new ArrayList<>();
} else {
size = new BigDecimal(size).multiply(scale).setScale(0, BigDecimal.ROUND_UP).intValue();
return getRandomList(list, size);
}
}
/**
* @param paramList
* @param count 抽取元素的个数
* @return
*/
public static List<CQResultPojo> getRandomList(List<CQResultPojo> paramList, int count) {
if (count == 0) {
return null;
}
Random random = new Random();
List<Integer> tempList = new ArrayList<Integer>();//临时存放产生的list索引,去除重复的索引
List<CQResultPojo> newList = new ArrayList();//生成新的list集合
int temp = 0;
if (count <= 1) {//如果数据小于1,取一条数据
temp = random.nextInt(paramList.size());
newList.add(paramList.get(temp));
} else {
for (int i = 0; i < Math.ceil(count); i++) {
temp = random.nextInt(paramList.size());//初始化一个随机数,将产生的随机数作为被抽list的索引
if (!tempList.contains(temp)) {//判断随机抽取的随机数
tempList.add(temp);
newList.add(paramList.get(temp));
} else {
i--;
}
}
}
return newList;
}
}