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

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()实时计算全局最大/最小值,再通过==比较当前景点的选择次数是否等于极值,若匹配则输出结果。

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

http://www.xdnf.cn/news/4768.html

相关文章:

  • [特殊字符]【深圳金融科技交流会】AI大模型如何重塑资管新生态?一线实战干货来了!
  • 极简远程革命:打破公网桎梏,重塑数字生活新体验
  • Vue 3.0中Treeshaking特性
  • Nacos源码—6.Nacos升级gRPC分析二
  • 从SiC到数字孪生:PSR芯片的技术迭代与未来布局
  • windows10 系统显示mov文件格式缩略图
  • 使用Hyper-V 安装Windows11操作系统
  • 缺乏实体人形机器人的主流高精度仿真方案
  • Matlab 分数阶PID控制
  • 数组和指针典型例题合集(一维数组、字符数组、二维数组)
  • python: 列表切片
  • Python Cookbook-7.8 使用 Berkeley DB 数据库
  • 最优化方法Python计算:有约束优化应用——线性Lasso回归预测器
  • 【Go】优化文件下载处理:从多级复制到零拷贝流式处理
  • PyTorchVideo实战:从零开始构建高效视频分类模型
  • 单片机自动排列上料控制程序 下
  • MySQL基础关键_012_事务
  • Modbus RTU 转 PROFINE 网关
  • k8s术语之CronJob
  • 计算机网络-LDP标签发布与管理
  • 4H-SiC 射频功率MESFET 的表面态分析
  • 【自定义指令】(el-table表格内容自动轮播)
  • Elastic:什么是 AIOps?
  • [人机交互]设计,原型建立和构造
  • mysql 数据库初体验
  • Cursor+AI辅助编程-优先完成需求工程结构化拆解
  • 【前端分享】CSS实现3种翻页效果类型,附源码!
  • 解决Ceph 14.2.22 Nautilus版本监视器慢操作问题的实践指南
  • 【Touching China】2012-2016
  • 从 CFD 到 DEM:积鼎流体仿真技术拓展与协同互补之路