基本的思想就是用一个取值在0到size之间的随机数来随机生成集合的索引以便取出元素。
- importjava.util.ArrayList;
- importjava.util.Random;
- publicclassTest{
- publicstaticvoidmain(String[]args){
- //存放内容的集合
- ArrayList<String>items=newArrayList<>();
- //存放乱序结果的集合
- ArrayList<String>result=newArrayList<>();
- //初始化存有内容的集合
- items.add("aaa");
- items.add("bbb");
- items.add("ccc");
- items.add("ddd");
- items.add("eee");
- items.add("fff");
- items.add("ggg");
- //初始化随机数
- Randomrand=newRandom();
- //取得集合的长度,for循环使用
- intsize=items.size();
- //遍历整个items数组
- for(inti=0;i<size;i++){
- //任意取一个0~size的整数,注意此处的items.size()是变化的,所以不能用前面的size会发生数组越界的异常
- intmyRand=rand.nextInt(items.size());
- //将取出的这个元素放到存放结果的集合中
- result.add(items.get(myRand));
- //从原始集合中删除该元素防止重复。注意,items数组大小发生了改变
- items.remove(myRand);
- }
- //便利输出结果
- for(inti=0;i<result.size();i++){
- System.out.print(result.get(i));
- }
- }
- }
再贴一段把字符串里面的内容每个字都打乱的。代码比较蠢蛋是很好懂:
- importjava.util.ArrayList;
- importjava.util.Random;
- publicclassTest{
- publicstaticvoidmain(String[]args){
- //存放内容的集合
- ArrayList<String>items=newArrayList<>();
- //存放乱序结果的集合
- ArrayList<String>result=newArrayList<>();
- ArrayList<String>result1=newArrayList<>();
- //初始化存有内容的集合
- items.add("鸡腿");
- items.add("鸭蛋");
- items.add("鹅毛");
- items.add("驴尾巴");
- //初始化随机数
- Randomrand=newRandom();
- //取得集合的长度,for循环使用
- intsize=items.size();
- //遍历整个items数组
- for(inti=0;i<size;i++){
- StringmyString=items.get(i);
- String[]mys=myString.split("");
- for(Stringitem:mys){
- if(!item.equals("")){
- result.add(item);
- }
- }
- }
- //取得集合的长度,for循环使用
- size=result.size();
- //遍历整个items数组
- for(inti=0;i<size;i++){
- //任意取一个0~size的整数,注意此处的items.size()是变化的,所以不能用前面的size会发生数组越界的异常
- intmyRand=rand.nextInt(result.size());
- //将取出的这个元素放到存放结果的集合中
- result1.add(result.get(myRand));
- //从原始集合中删除该元素防止重复。注意,items数组大小发生了改变
- result.remove(myRand);
- }
- //便利输出结果
- for(inti=0;i<result1.size();i++){
- System.out.print(result1.get(i)+"+");
- }
- }
- }