场景
有时候我们需要随机获取list中的数据来做判断,判断不通过再随机取下一个数据,如果每次都随机取获取太麻烦了,我们可以直接将list中的数据随机打乱,然后返回list就可以循环该list来处理就可以了。
代码实现
/*** suibibk.com* @author 小林同学**/public class RandomList {/*** 输入一个list,返回一个打乱顺序的list* @param list* @return*/public static List<String> getRandomList(List<String> list){if(list==null||list.size()==0) {return null;}//1、建立一个随机数生成器对象SecureRandom random = new SecureRandom();//2、建立一个乱序的对象List<String> result = new ArrayList<String>();boolean flag = true;int size = 0;while(flag) {size = list.size();//随机生成一个下标int index = random.nextInt(size);//将内容添加入list中result.add(list.get(index));//从原有的list中移除list.remove(index);if(list.size()==0) {flag=false;}}return result;}public static void main(String[] args) {for (int i=0;i<100;i++) {//不能用这个方法获取list,这个方法获取的是AbstractList//List<String> list = Arrays.asList(str);List<String> list = new ArrayList<>();list.add("1");list.add("2");list.add("3");list.add("4");list.add("5");List<String> result = getRandomList(list);System.out.println(result);}}}
测试结果
...[3, 5, 4, 2, 1][3, 2, 5, 1, 4][4, 5, 2, 1, 3][2, 3, 4, 1, 5][5, 1, 4, 2, 3][2, 1, 3, 4, 5]...
