集合之综合小练习
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); }); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律