这里的不重复指的是元素下标不重复
/**
* 从list中随机抽取不重复的元素
* @param paramList 要抽取的list
* @param count 要抽取的个数
* @return
*/
public static List getRandomList(List<Object[]> paramList,int count){
if(paramList.size()<count){
return paramList;
}
Random random=new Random();
List<Integer> tempList=new ArrayList<>();
List<Object[]> newList=new ArrayList<>();
int temp=0;
for(int i=0;i<count;i++){
temp=random.nextInt(paramList.size());
if(!tempList.contains(temp)){
tempList.add(temp);
newList.add(paramList.get(temp));
}
else{
i--;
}
}
return newList;
}
测试代码:
public static List<Object[]> getObjList() {
List<Object[]> dataIds = new ArrayList<>();
Object[] o1 = new Object[]{1,"a","b"};
Object[] o2 = new Object[]{2,"a","b"};
Object[] o3 = new Object[]{3,"a","b"};
Object[] o4 = new Object[]{4,"a","b"};
Object[] o5 = new Object[]{5,"a","b"};
dataIds.add(o1);
dataIds.add(o2);
dataIds.add(o3);
dataIds.add(o4);
dataIds.add(o5);
return dataIds;
}
public static void main(String[] args) {
Integer sum = 3;
List<Object[]> dateSums = getObjList();
List<Object[]> list = getRandomList(dateSums,sum);
System.out.println(list);
}
结果: