image.png
    将这行代码移动到上一行,用ctrl + shift + ⬆
    image.png

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