一、实现逻辑
1.需要一个固定的数据集。
2.从数据集中随机去除当前索引的数据,并移除生成。并重复生成多个。
二、编码
import java.util.ArrayList;import java.util.Calendar;import java.util.List;import java.util.Random;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * @author liushuaic * @date 2016-08-31 13:49 * @desc 随机生成类 * **/public class RandomUtils { private static Logger logger=LoggerFactory.getLogger(RandomUtils.class); /** * @author liushuaic * @date 2016-08-31 14:17 * @desc 随机不重复的数据 * */ public static int[] randomNumber(int maxNumber,int rtnCount) throws Exception{ logger.info("starTime:"+Calendar.getInstance().getTimeInMillis()); if(maxNumber == 0){ throw new Exception("maxNnumber 不能为 0"); } if(rtnCount == 0){ throw new Exception("rtnCount 不能为 0"); } //logger.info("maxNumber:"+maxNumber+"rtnCount:"+rtnCount); if(rtnCount>maxNumber){ throw new ArrayIndexOutOfBoundsException("rtnCount 不能大于 maxNumber"); } ListchacheArray=new ArrayList (); int[] rtnNumber=new int[rtnCount]; for(int i=1;i<=maxNumber;i++){ chacheArray.add(Integer.valueOf(i)); } for(int j=0;j
三、测试结果
1.给出100W的长度,取出1W个
2.时间长度1.226秒