集合之综合小练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.Lucky.test;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
 
/*
    自动点名器
    要求: 班级里面存在N名学生,实现随机点名
 */
public class testOne {
    public static void main(String[] args) {
 
        //创建集合
        ArrayList<String> str=new ArrayList<>();
 
        str.add("李四");
        str.add("王五"); //第一种方法添加
        Collections.addAll(str,"唯易","张三"); //第二种方法添加
 
        //创建随机数对象:方法1
        Random random=new Random();
        //随机点名
            int res= random.nextInt(str.size());
            System.out.println(str.get(res));
 
 
 
 
        //方法二:Collections的shuffle()
        Collections.shuffle(str);
        String name= str.get(0);
        System.out.println(name);
 
    }
 
 
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.Lucky.test;
 
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
 
/*
练习2:  要求:
           班级有N名学生,要实现随机点名的男生概率为70%,女生概率为30%
 
 */
public class testTwo {
    public static void main(String[] args) {
        //创建集合
        ArrayList<Integer> list=new ArrayList();
        Collections.addAll(list,1,1,1,1,1,1,1);  //70%
        Collections.addAll(list,0,0,0);          //30%
        Collections.shuffle(list);   //每次运行都打乱顺序,保证随机原则
 
        //遍历概率集合
        Random rand=new Random();
        int result=list.get(rand.nextInt(list.size()));  //结果只能是0或1
        System.out.println(result);
 
 
        ArrayList<String> boy=new ArrayList();
        Collections.addAll(boy,"唯易","文宇","中雨","任性","BUG","文书");
        ArrayList<String> girl=new ArrayList();
        Collections.addAll(girl,"小丽","小晓","晓雯");
        //再用随机出来的0或1遍历对应男女集合
         if (result==0){
             System.out.println(girl.get(rand.nextInt(girl.size())));
         }else {
             System.out.println(boy.get(rand.nextInt(boy.size())));
         }
 
 
 
    }
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package com.Lucky.test;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
 
/*
练习3:  要求:
           班级有N名学生,被点到的学生不会再次被点名
           直到所有学生都点完之后,重新开始第二轮点名
 
 */
public class testThree {
    public static void main(String[] args) {
        //创建
        ArrayList<String> lis=new ArrayList();
        Collections.addAll(lis,"唯易","文宇","中雨","任性","BUG","文书","小丽","小晓","晓雯");
 
 
       //创建集合储存每次随机点名的学生数据
        ArrayList<String> arr=new ArrayList<>();
        //获取集合lis的长度
        int len=lis.size();
 
        Random random=new Random();
        //遍历轮数:10
        for (int i = 1; i <=10; i++) {
            System.out.println("---第"+i+"轮-----");
            //每一次循环抽取的过程
            for (int j = 0; j < len; j++) {
                int index=  random.nextInt(lis.size());
                System.out.println(lis.get(index));
                arr.add(lis.get(index));   //临时集合添加数据
                lis.remove(lis.get(index));//原来集合较少数据
            }
                //还原数据【遍历还原点】
                lis.addAll(arr);
                arr.clear();
 
        }
 
 
 
 
    }
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.Lucky.test;
 
import java.util.*;
 
/**
 * 要求:定义一个Map集合,键储存省份 ,值储存多个市
 *  遍历结果格式: 广东省 = 广州,深圳,东莞,浙江,佛山
 */
public class testFive {
    public static void main(String[] args) {
        //定义一个map集合
        HashMap<String,ArrayList<String>> map=new HashMap();
 
        ArrayList<String> arr=new ArrayList<>();
        Collections.addAll(arr,"广州","广州","东莞","浙江","佛山");
 
        ArrayList<String> arr1=new ArrayList<>();
        Collections.addAll(arr1,"桂林","贵州","西陵");
 
         map.put("广东省",arr);
         map.put("广西",arr1);
 
 
      //  遍历结果格式: 广东省 = 广州,深圳,东莞,浙江,佛山
        //方法一:
        //遍历map集合
        Set<Map.Entry<String, ArrayList<String>>> entries = map.entrySet();
        for (Map.Entry<String, ArrayList<String>> entry : entries) {
            StringBuilder builder=new StringBuilder();
            for (String s : entry.getValue()) {
                builder.append( s+",");
            }
            System.out.println(entry.getKey()+" ="+builder);
        }
 
 
        System.out.println("----------------------");
 
         //方法二:
        Set<String> strings = map.keySet();
        strings.forEach(str-> {
            /**
             * 参数一:每一次添加数据的分割符
             * 参数二:字符串开始的符号
             * 参数三:字符串结尾的符号
             */
            StringJoiner joiner = new StringJoiner(",","","");
            ArrayList<String> temp=map.get(str);
            for (String s : temp) {
                joiner.add(s);
            }
            System.out.println(str+"="+joiner);
        });
    }
}

  

posted @   唯易人生  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示