一、需求
某个班级80名学生,现在需要组成秋游活动,班长提供了四个景点依次是(A、B、C、D) ,每个学生只能选择一个景点,请统计出最终哪个景点想去的人数最多。
二、分析
●将80个学生选择的数据拿到程序中去。
●定义Map集合用于存储最终统计的结果。
●遍历80个学生选择的数据,看Map集合中是否存在,不存在存入“数据=1 ", 存在则其对应值+1。
三、具体
1、把80个学生选择的数据拿进来。
2、定义一个Map集合记录最终统计的结果: A=30 B=20 C=20 D=10 键是景点,值是选择的数量
3、遍历80个学生选择的数据
4、提取当前选择景点字符
5、判断Map集合中是否存在这个键
6、如果Map集合中是存在这个键让其值+1,不存在则说明此景点是第一次被选
四、代码
/*
需求:统计投票人数
*/
public class MapTest1 {
public static void main(String[] args) {
//1.把80个学生选择的数据拿进来。
String[] selscts = {"A","B","C","D"};
StringBuilder sb = new StringBuilder();
Random r = new Random();
for (int i = 0; i < 80; i++) {
sb.append(selscts[r.nextInt(selscts.length)]);
}
System.out.println(sb);
//2.定义一个Map集合记录最终统计的结果: A=30 B=20 C=20 D=10 键是景点,值是选择的数量
Map<Character,Integer> infos = new HashMap<>();
//3.遍历80个学生选择的数据
for (int i = 0; i < sb.length(); i++) {
//4.提取当前选择景点字符
char ch = sb.charAt(i);
//5.判断Map集合中是否存在这个键
if (infos.containsKey(ch)){
//让其值+1
infos.put(ch,infos.get(ch) + 1);//Map集合后面添加的键对应的元素会覆盖前面重复的整个元素
}else {
//说明此景点是第一次被选
infos.put(ch,1);
}
}
System.out.println(infos);
}
}