需求:班级里有N个学生,实现随机点名器
代码实现:
- public class Test1 {
- public static void main(String[] args) {
- /* 班级里有N个学生,学生属性:姓名,年龄,性别。
- 实现随机点名器。*/
-
-
- //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);
-
-
- }
- }
需求:
班级里有N个学生
要求在随机的时候,70%的概率随机到男生,30%的概率随机到女生
代码实现:
- public class Test2 {
- public static void main(String[] args) {
- /* 班级里有N个学生
- 要求:
- 70%的概率随机到男生
- 30%的概率随机到女生
-
- "范闲","范建","范统","杜子腾","宋合泛","侯笼藤","朱益群","朱穆朗玛峰",
- "杜琦燕","袁明媛","李猜","田蜜蜜",
- */
- //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);
- }
-
-
- }
- }
需求:
班级里有N个学生,被点到的学生不会再被点到。但是如果班级中所有的学生都点完了, 需要重新开启第二轮点名。
代码实现:
- public class Test3 {
- public static void main(String[] args) {
- /* 班级里有5个学生
- 要求:
- 被点到的学生不会再被点到。
- 但是如果班级中所有的学生都点完了,需要重新开启第二轮点名。*/
-
-
- //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();
-
- }
- }
- }
需求:
定义一个Map集合,键用表示省份名称province,值表示市city,但是市会有多个。
添加完毕后,遍历结果格式如下:
江苏省 = 南京市,扬州市,苏州市,无锡市,常州市
湖北省 = 武汉市,孝感市,十堰市,宜昌市,鄂州市
河北省 = 石家庄市,唐山市,邢台市,保定市,张家口市
代码实现:
- public class Test4 {
- public static void main(String[] args) {
- /* 需求
- 定义一个Map集合,键用表示省份名称province,值表示市city,但是市会有多个。
- 添加完毕后,遍历结果格式如下:
- 江苏省 = 南京市,扬州市,苏州市,无锡市,常州市
- 湖北省 = 武汉市,孝感市,十堰市,宜昌市,鄂州市
- 河北省 = 石家庄市,唐山市,邢台市,保定市,张家口市*/
-
-
- //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);
-
- }
- }
- }