当前位置: 首页 > news >正文

java实战(第六篇):统计投票信息

一.需求分析

需求:某个班级80名学生,现在需要组织春游活动,班长以此提供了四个景点A B C D,每个学生只能选择一个景点,请统计最终想去哪个景点的人最多。 

很明显我们这个案例需要存储一对一的数据,就需要考虑使用map集合来做。map集合内存放的都是一对一的键值对。

二.源码思路分析

package maptest;import java.util.*;public class test {public static void main(String[] args) {calc();}private static void calc() {//1.产生80个学生选择的景点数据拿到程序中,用随机数进行模拟。List<String> locations = new ArrayList<>();String[] names = {"玉龙雪山","长城","少林寺","丽江"};Random r = new Random();for (int i = 0; i < 80; i++) {int index = r.nextInt(names.length);//0,1,2,3locations.add(names[index]);}//2.统计每个景点被选择的次数//创建一个Map集合,key为景点名称,value为景点被选择的次数Map<String,Integer> map = new HashMap<>();//一行创建map集合的经典代码for (String location : locations) {//判断map集合中是否有这个景点if(map.containsKey(location)){//如果有这个景点,就让这个景点对应的value值加1Integer count = map.get(location);map.put(location,count+1);}else{//如果没有这个景点,就添加这个景点,value值初始化为1map.put(location,1);}}//3.遍历map集合,将结果打印出来(只需要打印最后的结果,每个景点被选择的次数)map.forEach((k,v)-> System.out.println(k+"被选择"+v+"次"));//4.找到哪个景点选择人数最多,并打印出来for (Map.Entry<String, Integer> entry : map.entrySet()) {if(entry.getValue()==Collections.max(map.values())){System.out.println("选择人数最多是:"+entry.getKey());}if(entry.getValue()==Collections.min(map.values())){System.out.println("选择人数最少是:"+entry.getKey());}}}
}

下面我来讲解一下这篇代码:

一.先讲解注释1. 

我们首先需要产生80个学生选择的景点数据,我们用到了arraylist这个集合,同样是用到了多态的思想:Arraylist为List提供了接口的具体实现,同时将这个集合内的数据固定为String类型,接着添加四个景点,引入随机数遍历这个字符串names,遍历到的数据加入到集合locations中。

二.接着讲解注释2.

首先创建一个Map集合,key为景点名称,value为景点被选择的次数,其中固定key类型为String,value类型为Integer,增强for循环遍历map集合,再给读者讲解一下这里的for循环,locations这个集合已经固定类型为String,location是创建的遍历对象。后面进行if判断。

三.讲解注释3.

这是一个map集合的功能,调用forEach功能遍历,k代表key,v代表value。

四.最后讲解注释4.

首先通过map.entrySet()获取所有键值对,在遍历过程中,用Collections.max()和Collections.min()实时计算全局最大/最小值,再通过==比较当前景点的选择次数是否等于极值,若匹配则输出结果。

看到这里,你应该对这个案例有了自己的理解和方法,那就自己实践起来吧。你的点赞和关注是对我最大的支持,如果有问题也可以在评论区交流哦!!

相关文章:

  • C++ STL 入门:map 键值对容器
  • 手写Promise的静态方法
  • 2024年 AI大模型我该买一张什么显卡?
  • 【行业深度解析】什么是马甲包?
  • 责任链设计模式
  • vue3的深入组件-组件 v-model
  • 免费AI图像编辑平台,最新无损放大技术
  • 无刷电机控制算法策略
  • 985高校查重率“隐性阈值”:低于5%可能被重点审查!
  • 4:点云处理—去噪、剪切、调平
  • RT Thread Studio修改控制台串口
  • 【杂谈】Godot 2D游戏窗口设置
  • NeurIPS 2024 | 工业质检缺陷检测相关论文梳理
  • OpenCV定位地板上的书
  • 了解Dockerfile
  • cat、more和less的区别
  • WHAT - ahooks vs swr 请求
  • 【万字长文】深入浅出 LlamaIndex 和 LangChain:从RAG到智能体,轻松驾驭LLM应用开发
  • 关于form、自定义Hook、灰度发布、正则表达(只能输入数字和不要空格)
  • kafka logs storage
  • 中国词学研究会原会长、华东师大教授马兴荣逝世,享年101岁
  • 人民时评:透过上海车展读懂三组密码
  • 迪拜金融市场CEO:2024年市场表现出色,超八成新投资者来自海外
  • 高盛上调A股未来12个月目标点位,沪深300指数潜在回报15%
  • 国家主席习近平同普京总统出席签字和合作文本交换仪式
  • 巴基斯坦军方称印度袭击已致26死46伤