集合之综合小练习

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);

    }


}

  

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())));
         }



    }
}

  

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();

        }




    }
}

  

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 @ 2022-12-12 10:28  唯易人生  阅读(17)  评论(0)    收藏  举报