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