Java 中集合的练习
创始人
2024-11-26 12:35:26
0

练习1:随机点名器

需求:班级里有N个学生,实现随机点名器。

分析:有两种实现方式,随机生成索引和使用shuffle方法打乱元素后获取0索引处的元素。

代码实现:

public class Test1 {     public static void main(String[] args) {                  //1.定义集合         ArrayList list = new ArrayList<>();         //2.添加数据         Collections.addAll(list,"范闲","范建","范统","杜子腾","杜琦燕","宋合泛","侯笼藤","朱益群","朱穆朗玛峰","袁明媛");         //3.随机点名         /* Random r = new Random();         int index = r.nextInt(list.size());         String name = list.get(index);         System.out.println(name);*/ ​         //打乱         Collections.shuffle(list); ​         String name = list.get(0);         System.out.println(name); ​ ​     } }

练习2:带概率的随机

需求:班级里有N个学生。要求在随机的时候,70%的概率随机到男生,30%的概率随机到女生。

代码实现:

public class Test2 {     public static void main(String[] args) {         //1.创建集合         ArrayList list = new ArrayList<>();         //2.添加数据         Collections.addAll(list,1,1,1,1,1,1,1);         Collections.addAll(list,0,0,0);         //3.打乱集合中的数据         Collections.shuffle(list);         //4.从list集合中随机抽取0或者1         Random r = new Random();         int index = r.nextInt(list.size());         int number = list.get(index);         System.out.println(number);         //5.创建两个集合分别存储男生和女生的名字         ArrayList boyList = new ArrayList<>();         ArrayList girlList = new ArrayList<>();          Collections.addAll(boyList,"范闲","范建","范统","杜子腾","宋合泛","侯笼藤","朱益群","朱穆朗玛峰");         Collections.addAll(girlList,"杜琦燕","袁明媛","李猜","田蜜蜜");          //6.判断此时是从boyList里面抽取还是从girlList里面抽取         if(number == 1){             //boyList             int boyIndex = r.nextInt(boyList.size());             String name = boyList.get(boyIndex);             System.out.println(name);         }else{             //girlList             int girlIndex = r.nextInt(girlList.size());             String name = girlList.get(girlIndex);             System.out.println(name);         }       } }

练习3:随机不重复

需求:班级里有N个学生,被点到的学生不会再被点到。但是如果班级中所有的学生都点完了, 需要重新开启第二轮点名。

分析:使用remove方法模拟点到的学生,并将其添加到一个新的集合中,点名结束后重新将其赋给原始集合,再次循环。

代码实现:

public class Test3 {     public static void main(String[] args) {         //1.定义集合         ArrayList list1 = new ArrayList<>();         //2.添加数据         Collections.addAll(list1, "范闲", "范建", "范统", "杜子腾", "杜琦燕", "宋合泛", "侯笼藤", "朱益群", "朱穆朗玛峰", "袁明媛");         //创建一个临时的集合,用来存已经被点到学生的名字         ArrayList list2 = new ArrayList<>();         //外循环:表示轮数         for (int i = 1; i <= 10; i++) {             System.out.println("=========第" + i + "轮点名开始了======================");             //3.获取集合的长度             int count = list1.size();             //4.随机点名             Random r = new Random();             //内循环:每一轮中随机循环抽取的过程             for (int j = 0; j < count; j++) {                 int index = r.nextInt(list1.size());                 String name = list1.remove(index);                 list2.add(name);                 System.out.println(name);             }             //此时表示一轮点名结束             //list1 空了 list2 10个学生的名字             list1.addAll(list2);             list2.clear();         }     } }

练习4:集合的嵌套

需求:定义一个Map集合,键用表示省份名称province,值表示市city,但是市会有多个。添加完毕后,遍历结果格式如下:

江苏省 = 南京市,扬州市,苏州市,无锡市,常州市

湖北省 = 武汉市,孝感市,十堰市,宜昌市,鄂州市

public class Test4 {     public static void main(String[] args) {         //1.创建Map集合         HashMap> hm = new HashMap<>();          //2.创建单列集合存储市         ArrayList city1 = new ArrayList<>();         city1.add("南京市");         city1.add("扬州市");         city1.add("苏州市");         city1.add("无锡市");         city1.add("常州市");          ArrayList city2 = new ArrayList<>();         city2.add("武汉市");         city2.add("孝感市");         city2.add("十堰市");         city2.add("宜昌市");         city2.add("鄂州市");          ArrayList city3 = new ArrayList<>();         city3.add("石家庄市");         city3.add("唐山市");         city3.add("邢台市");         city3.add("保定市");         city3.add("张家口市");          //3.把省份和多个市添加到map集合         hm.put("江苏省",city1);         hm.put("湖北省",city2);         hm.put("河北省",city3);          Set>> entries = hm.entrySet();         for (Map.Entry> entry : entries) {             //entry依次表示每一个键值对对象             String key = entry.getKey();             ArrayList value = entry.getValue();             StringJoiner sj = new StringJoiner(", ","","");             for (String city : value) {                 sj.add(city);             }             System.out.println(key + " = " + sj);          }     } }

相关内容

热门资讯

正版授权“如何购买金花房卡普及... 新上游牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
微信上玩炸金花充值方式/金花链... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
正版授权“微信金花房卡招代理/... 新圣游是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来...
房卡必备教程“牛牛金花房卡模式... 卡贝大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来...
安卓系统qq同步助手在哪,安卓... 你是不是也在为找不到安卓系统QQ同步助手而烦恼呢?别急,今天就来给你详细说说这个问题的解决之道。咱们...
秒懂教程“微信斗牛房卡找谁买/... 金牛座牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
安卓系统钱包找不到了,紧急寻回... 亲爱的手机用户,你是不是也有过这样的经历:安卓系统的钱包应用突然不见了,就像它从人间蒸发了一样?别急...
正版授权“金花房卡从哪里购买/... 新永和是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来...
微信金花房卡哪里买的/金花链接... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
给大家讲解“炸金花房卡链接在哪... 悟空大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
秒懂教程“怎么购买微信炸金花房... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡...
现在安卓系统还卡机吗,流畅体验... 你有没有发现,现在提到安卓系统,大家的第一反应就是“卡机”?别急,今天咱们就来聊聊这个话题,看看现在...
终于找到“微信斗牛牛房卡使用教... 微信斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
微信斗牛房卡怎么来的/微信金花... 微信斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来...
一分钟了解“金花链接的房卡在哪... 微信斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
金花链接房卡怎么创建房间/微信... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
房卡必备教程“买房卡的金花房代... 新漫游牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
安卓系统qq号登陆苹果系统,跨... 你有没有想过,你的安卓手机上的QQ号,竟然也能在苹果系统上畅游呢?没错,就是那个我们每天离不开的社交...
终于找到“微信斗牛房卡怎么获得... 微信斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来...
牛牛金花房卡链接在哪买/炸金花... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...