将这行代码移动到上一行,用ctrl + shift + ⬆
package com.itheima.d8_map_test;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
/**
* 需求: 统计投票人数
*/
public class MapTest {
public static void main(String[] args) {
// 1.把80个学生选择的数据拿过来
String[] selects = {"A","B","C","D"};
// 创建拼接字符串对象
StringBuilder sb = new StringBuilder();
Random r = new Random();
for (int i = 0; i < 80; i++) {
// 将索引出来的元素添加到sb对象中(拼接)
sb.append(selects[r.nextInt(selects.length)]); // r.nextInt可以随机索引0-3 ,获取字符串数组元素
}
System.out.println(sb); //CDCABDCCABCCDCBBABAADDDDBDCDBCCCCBACCBAACBCDDCCDCBACBDDABCCCDDADBADDDDCCDAAADDBD
// 2. 定义一个Map集合记录最终统计的结果: A=30 B=20 C=20 D=10 键是景点,值是选择的数量
// Character 是包装类的字符
Map<Character,Integer> infos = new HashMap<>(); // {A = 1}
// 3. 遍历80个学生选择的数据
for (int i = 0; i < sb.length(); i++) { // 将字符串遍历
// 4.提取当前选择景点字符
char ch = sb.charAt(i); // 根据索引获取字符
// 5. 判断Map集合是否存在这个键
if (infos.containsKey(ch)){
// 让其值 + 1
// 因为如果存在该键,在添加这个键会覆盖之前的键,下面的+1,相当于刷新该键的值
infos.put(ch,infos.get(ch) + 1);
}else {
// 说明此景点是第一次被选,就添加元素,让其值为1
infos.put(ch,1);
}
}
// 4. 输出infos集合 (Map集合可以直接输出内容)
System.out.println(infos); //{A=15, B=15, C=25, D=25}
}
}