案例一->自动点名器1:
题解:
package com.qiong.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
public class Test1 {
public static void main(String[] args) {
/*
班里有n个学生,实现随机点名器
*/
//1.创建集合并添加数据
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"zhangsan","lisi","wangwu","zhaoliu","liuqi");
//2.生成随机索引
Random r = new Random();
int index = r.nextInt(list.size());
//3.输出学生
System.out.println(list.get(index));
}
}
案例二->自动点名器2:
题解:
package com.qiong.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
public class Test2 {
public static void main(String[] args) {
/*
自动点名器2
班级里有N个学生
要求:
70%的概率随机到男生
30%的概率随机到女生
*/
//创建学生对象
Student s1 = new Student("张无忌", "男");
Student s2 = new Student("赵敏", "女");
Student s3 = new Student("小龙女", "女");
Student s4 = new Student("张三丰", "男");
Student s5 = new Student("杨逍", "男");
//创建集合并添加元素
ArrayList<Student> list = new ArrayList<>();
Collections.addAll(list, s1, s2, s3, s4, s5);
Random r = new Random();
int temp = r.nextInt(10) + 1;
Student s = new Student();
while (true){
s = stu(list);
if(temp < 8){
if(s.getGender().equals("男")){
break;
}
}else {
if(s.getGender().equals("女")){
break;
}
}
}
System.out.println(s);
}
//随机一个学生对象
public static Student stu(ArrayList<Student> list){
Random r = new Random();
int index = r.nextInt(list.size());
return list.get(index);
}
}
案例三->自动点名气3:
题解:
package com.qiong.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
/*
自动点名器3
班级里有N个学生
要求:
被点到的学生不会再被点到。
但是如果班级中所有的学生都点完了,需要重新开启第二轮点名。
*/
//创建集合并添加元素
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "张无忌", "杨逍", "赵敏", "小龙女", "张三丰");
//创建临时集合用来每轮的点名
ArrayList<String> temp = new ArrayList<>(list);
//生成随机索引,输出学生姓名
Random r = new Random();
Scanner sc = new Scanner(System.in);
while (true) {
if (temp.addAll(list)) {
System.out.println("重新开始一轮点名");
}
System.out.println("输入-1代表结束点名,否则继续点名");
String s = sc.nextLine();
if (s.equals("-1")) {
break;
}
int index = r.nextInt(temp.size());
System.out.println(temp.get(index));
temp.remove(temp.get(index));
}
}
}
案例四->Map集合案例-省和市
题解:
package com.qiong.test;
import java.util.HashMap;
import java.util.function.BiConsumer;
public class Test6 {
public static void main(String[] args) {
/*
Map集合案例-省和市
需求
定义一个Map集合,键用表示省份名称province,值表示市city,但是市会有多个。
添加完毕后,遍历结果格式如下:
江苏省=南京市,扬州市,苏州市,无锡市,常州市
湖北省=武汉市,孝感市,十堰市,宜昌市,鄂州市
河北省=石家庄市,唐山市,邢台市,保定市,张家口市
*/
HashMap<String,String[]> hm = new HashMap<>();
String[] s1 = {"南京市","扬州市","苏州市","无锡市","常州市"};
String[] s2 = {"武汉市","孝感市","十堰市","宜昌市","鄂州市"};
String[] s3 = {"石家庄市","唐山市","邢台市","保定市","张家口市"};
hm.put("江苏省", s1);
hm.put("湖北省", s2);
hm.put("河北省", s3);
hm.forEach((String s, String[] strings) -> {
StringBuilder str = new StringBuilder();
for (int i = 0; i < strings.length; i++) {
if(i == strings.length - 1){
str.append(strings[i]);
break;
}
str.append(strings[i]).append(",");
}
System.out.println(s + " = " + str);
}
);
}
}