Java集合类综合练习题

代码

import java.util.*;
class ScoreRecord {private String studentId;private String name;private String subject;private int score;public ScoreRecord(String studentId, String name, String subject, int score) {this.studentId = studentId;this.name = name;this.subject = subject;this.score = score;}public String getStudentId() { return studentId; }public String getName() { return name; }public String getSubject() { return subject; }public int getScore() { return score; }
}public class StudentScoreAnalysis_NoStream {public static void main(String[] args) {String[] scores = {"S1001,张三,数学,95","S1002,李四,数学,76","S1003,王五,数学,59","S1001,张三,英语,88","S1002,李四,英语,90","S1003,王五,英语,66","S1001,张三,物理,91","S1002,李四,物理,54","S1003,王五,物理,73","S1004,赵六,数学,88","S1004,赵六,英语,92","S1004,赵六,物理,85"};// 0. 构造ScoreRecord集合List<ScoreRecord> recordList = new ArrayList<>();for (int i = 0; i < scores.length; i++) {String[] parts = scores[i].split(",");recordList.add(new ScoreRecord(parts[0], parts[1], parts[2], Integer.parseInt(parts[3])));}// 1. 列出所有学生姓名System.out.println("-------------------");Set<String> studentNames = new TreeSet<>();for (ScoreRecord r : recordList) {studentNames.add(r.getName());}System.out.println("列出所有学生姓名 : " + studentNames);// 2. 每个学生总分System.out.println("-------------------");Map<String, Integer> totalScores = new HashMap<>();for (ScoreRecord r : recordList) {if(totalScores.containsKey(r.getName())){int currentScore = totalScores.get(r.getName());currentScore+=r.getScore();totalScores.put(r.getName(),currentScore);}else {totalScores.put(r.getName(),r.getScore());}}System.out.println("每个学生总分");for (Map.Entry<String, Integer> e : totalScores.entrySet()) {System.out.println(e.getKey()+":"+e.getValue());}// 找出总分最高学生System.out.println("-------------------");String topStudent = "";int maxTotal = Integer.MIN_VALUE;for (Map.Entry<String, Integer> e : totalScores.entrySet()) {if (e.getValue() > maxTotal) {maxTotal = e.getValue();topStudent = e.getKey();}}System.out.println("总分最高学生: " + topStudent + " (" + maxTotal + ")");// 6. 每个学生平均分System.out.println("-------------------");Map<String, Integer> sumScores = new HashMap<>();Map<String, Integer> countScores = new HashMap<>();for (ScoreRecord r : recordList) {sumScores.put(r.getName(), sumScores.getOrDefault(r.getName(), 0) + r.getScore());countScores.put(r.getName(), countScores.getOrDefault(r.getName(), 0) + 1);}for (String name : sumScores.keySet()) {double avg = sumScores.get(name) * 1.0 / countScores.get(name);System.out.printf("%s: %.2f%n", name, avg);}// 5. 不及格学生记录System.out.println("-------------------");System.out.println("不及格记录:");for (ScoreRecord r : recordList) {if (r.getScore() < 60) {System.out.println(r.getName() + " - " + r.getSubject() + ": " + r.getScore());}}// 3. 每门课程的最高分System.out.println("-------------------");Map<String, ScoreRecord> subjectTop = new HashMap<>();for (ScoreRecord r : recordList) {if (!subjectTop.containsKey(r.getSubject()) ||r.getScore() > subjectTop.get(r.getSubject()).getScore()) {subjectTop.put(r.getSubject(), r);}}System.out.println("每门课程的最高分:");for (String subject : subjectTop.keySet()) {ScoreRecord rec = subjectTop.get(subject);System.out.println(subject + ": " + rec.getName() + " (" + rec.getScore() + ")");}// 7. 每门课程平均分System.out.println("-------------------");System.out.println("每门课程平均分:");Map<String, Integer> subjectSum = new HashMap<>();Map<String, Integer> subjectCount = new HashMap<>();for (ScoreRecord r : recordList) {subjectSum.put(r.getSubject(), subjectSum.getOrDefault(r.getSubject(), 0) + r.getScore());subjectCount.put(r.getSubject(), subjectCount.getOrDefault(r.getSubject(), 0) + 1);}for (String subject : subjectSum.keySet()) {double avg = subjectSum.get(subject) * 1.0 / subjectCount.get(subject);System.out.printf("%s: %.2f%n", subject, avg);}// 8. 平均分最高课程System.out.println("-------------------");String topSubject = "";double highestAvg = Double.MIN_VALUE;for (String subject : subjectSum.keySet()) {double avg = subjectSum.get(subject) * 1.0 / subjectCount.get(subject);if (avg > highestAvg) {highestAvg = avg;topSubject = subject;}}System.out.println("平均分最高课程: " + topSubject);// 10. 成绩明细表System.out.println("-------------------");System.out.println("成绩明细表:");Map<String, List<ScoreRecord>> byStudent = new LinkedHashMap<>();for (ScoreRecord r : recordList) {if (!byStudent.containsKey(r.getName())) {byStudent.put(r.getName(), new ArrayList<>());}byStudent.get(r.getName()).add(r);}for (String name : byStudent.keySet()) {System.out.print(name + ": ");List<ScoreRecord> list = byStudent.get(name);for (ScoreRecord r : list) {System.out.print(r.getSubject() + "(" + r.getScore() + ") ");}System.out.println();}}
}

输出


-------------------
列出所有学生姓名 : [张三, 李四, 王五, 赵六]
-------------------
每个学生总分
李四:220
张三:274
王五:198
赵六:265
-------------------
总分最高学生: 张三 (274)
-------------------
李四: 73.33
张三: 91.33
王五: 66.00
赵六: 88.33
-------------------
不及格记录:
王五 - 数学: 59
李四 - 物理: 54
-------------------
每门课程的最高分:
物理: 张三 (91)
数学: 张三 (95)
英语: 赵六 (92)
-------------------
每门课程平均分:
物理: 75.75
数学: 79.50
英语: 84.00
-------------------
平均分最高课程: 英语
-------------------
成绩明细表:
张三: 数学(95) 英语(88) 物理(91) 
李四: 数学(76) 英语(90) 物理(54) 
王五: 数学(59) 英语(66) 物理(73) 
赵六: 数学(88) 英语(92) 物理(85) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93187.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

秒懂边缘云|1分钟了解边缘安全加速 ESA

普通开发者如何搭建安全快速的在线业务才能性价比最高 &#xff1f;阿里云现已为开发者推出免费版边缘安全加速 ESA&#xff0c;1 个产品就能把 CDN 缓存 API 加速 DNS WAF DDoS 防护全部搞定&#xff0c;还支持边缘函数快速部署网站和 AI 应用&#xff0c;性价比拉满。 1…

数据结构:串、数组与广义表

&#x1f4cc;目录&#x1f524; 一&#xff0c;串的定义&#x1f330; 二&#xff0c;案例引入场景1&#xff1a;文本编辑器中的查找替换场景2&#xff1a;用户手机号验证&#x1f4da; 三&#xff0c;串的类型定义、存储结构及其运算&#xff08;一&#xff09;串的抽象类型定…

服务器路由相关配置Linux和Windows

服务器路由相关配置Linux和Windowscentos路由系统核心概念传统工具集(命令)iproute2 工具集&#xff08;推荐&#xff09;NetworkManager 工具路由配置文件体系高级路由功能策略路由多路径路由路由监控工具系统级路由配置启用IP转发路由守护进程路由问题诊断流程Windows 路由Wi…

Spring Boot启动事件详解:类型、监听与实战应用

1. Spring Boot启动事件概述1.1 什么是Spring Boot启动事件在Spring Boot的应用生命周期中&#xff0c;从main方法执行到应用完全就绪&#xff0c;期间会发生一系列事件&#xff08;Event&#xff09;。这些事件由Spring Boot框架在特定时间点触发&#xff0c;用于通知系统当前…

Python闭包详解:理解闭包与可变类型和不可变类型的关系

一、定义闭包&#xff08;Closure&#xff09; 指的是一个函数对象&#xff0c;即使其外部作用域的变量已经不存在了&#xff0c;仍然能访问这些变量。简单来说&#xff0c;闭包是由函数及其相关的环境变量组成的实体。def outer():x 10def inner():print(x)return innerf ou…

BotCash:GPT-5发布观察 工程优化的进步,还是技术突破的瓶颈?

BotCash&#xff1a;GPT-5发布观察 工程优化的进步&#xff0c;还是技术突破的瓶颈&#xff1f; 在GPT-4以多模态能力震撼业界的一年后&#xff0c;GPT-5的亮相显得有些“平静”。当人们期待着又一场颠覆性技术革命时&#xff0c;这场发布会更像是给大模型技术按下了“精细打磨…

AJAX学习(2)

目录 一.XMLHttpRequest 二.XMLHttpRequest——查询参数 三.案例——地区查询 四.XMLHttpRequest_数据提交 五.Promise 六.Promise三种状态 七.PromiseeeXHR获取省份列表&#xff08;案例&#xff09; 八.封装-简易axios-获取省份列表 九.封装-简易axios-获取地区列表 …

解决 pip 安装包时出现的 ReadTimeoutError 方法 1: 临时使用镜像源(单次安装)

解决 pip 安装包时出现的 ReadTimeoutError 当您在使用 pip 安装 Python 包时遇到 pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(hostfiles.pythonhosted.org, port443): Read timed out. 错误时&#xff0c;这通常是由于网络问题导致的连接超时。P…

Linux下使用Samba 客户端访问 Samba 服务器的配置(Ubuntu Debian)

在 Linux 系统中&#xff0c;Samba 提供了与 Windows 系统文件共享的便利方式。本文将详细介绍在 Ubuntu 和 Debian 系统下如何安装 Samba 客户端、访问共享资源&#xff0c;并实现远程目录挂载和开机自动挂载。 文章参考自&#xff08;感谢分享&#xff09;&#xff1a;https…

解决dedecms文章默认关键字太短的问题

在管理文章或软件的时候&#xff0c;大家在添加关键字和内容摘要的时候&#xff0c;是不是对这样的情况感到比较的郁闷&#xff0c;我的关键字设定的明明非常的好&#xff0c;可是添加或修改后&#xff0c;会被无缘无故的截去很多&#xff0c;想必大家也都非常的明白&#xff0…

K8s-kubernetes(二)资源限制-详细介绍

K8s如何合理规定对象资源使用 基本概念 Kubernetes中&#xff0c;占用资源的最小单元为单个PodKubernetes中&#xff0c;资源占用主要针对服务器的CPU、内存 为什么要做资源限制 对于Kubernetes集群而言&#xff0c;所有Pod都会占用K8s集群所在服务器的资源&#xff0c;如果不做…

量子神经网络:从NISQ困境到逻辑比特革命的破局之路

——解析2025千比特时代开发者的机遇与行动框架 引言:量子计算的“20比特魔咒”与千比特悖论 当开发者被建议“避免在>20量子比特电路训练”时,富士通却宣布2025年实现10,000物理比特系统。这一矛盾揭示了量子计算从NISQ时代向FTQC时代跃迁的核心逻辑:千比特突破非为直接…

react+vite-plugin-react-router-generator自动化生成路由

前言&#xff1a;react项目实际使用中有很多提升性能与功能的插件&#xff0c;今天来说一说vite里面提供的vite-plugin-react-router-generator&#xff0c;他主要提供了自动生成路由的功能&#xff0c;配合我们的loadable/component可以实现路由的懒加载与统一管理。1、实现效…

服务器查看 GPU 占用情况的方法

在 Linux 系统中查看 GPU 占用情况&#xff0c;主要取决于你的 GPU 类型&#xff08;NVIDIA/AMD&#xff09;&#xff0c;以下是常用方法&#xff1a; 一、NVIDIA GPU&#xff08;最常用&#xff0c;如 RTX 系列、Tesla 系列&#xff09; 使用 NVIDIA 官方工具 nvidia-smi&…

【Docker实战进阶】Docker 实战命令大全

Docker 实战命令大全 Docker 实战场景&#xff0c;以 Nginx 为核心示例&#xff0c;梳理容器生命周期、镜像管理、网络配置、数据持久化及 Compose 编排的核心命令与最佳实践。 一、容器生命周期管理 1. 基础生命周期命令 docker run - 创建并启动容器 核心功能&#xff1a;基于…

PyCharm 2025.2:面向工程师的 AI 工具

引言 随着人工智能技术的快速发展&#xff0c;AI 工程师对开发工具的需求也在不断提升。PyCharm 2025.2 版本带来了革命性的 AI 工具包&#xff0c;将 AI 开发所需的实验、调试、评估和部署功能原生集成到 IDE 中。这一重大更新不仅提升了开发效率&#xff0c;也为 AI 工程师提…

爬虫逆向--Day15--核心逆向案例2(Python逆向实现请求加密、请求堆栈、拦截器关键字)

一、逆向案例之Python逆向实现请求加密//具体代码如下 function l(t, e) {return t.toString().toUpperCase() > e.toString().toUpperCase() ? 1 : t.toString().toUpperCase() e.toString().toUpperCase() ? 0 : -1}function u(t) {for (var e Object.keys(t).sort(l)…

时序数据库市场前景分析

1. 引言随着物联网&#xff08;IoT&#xff09;、工业互联网、金融科技、智慧城市等领域的快速发展&#xff0c;数据呈现爆发式增长&#xff0c;其中时间序列数据&#xff08;Time-Series Data&#xff09;占据了重要地位。时序数据库&#xff08;Time-Series Database, TSDB&a…

【网络安全测试】Burp Suite使用指导、配置及常见问题介绍(有关必回)

Burp Suite 是**渗透测试领域事实上的标准工具**&#xff0c;尤其擅长Web应用与API安全测试。针对AI系统&#xff0c;它主要用于测试模型API、管理后台等Web接口。以下是专业级使用指南&#xff1a;---### **一、 核心模块与功能概览**| **模块** | **核心功能** | **AI测试重点…

iOS 26 一键登录失效:三大运营商 SDK 无法正常获取手机号

近期&#xff0c;不少开发者和用户反馈&#xff0c;在升级到 iOS 26 系统后&#xff0c;App 内的 一键登录功能无法正常使用。无论是移动、电信还是联通的 SDK&#xff0c;都会出现无法获取手机号的情况&#xff0c;导致用户需要改用短信验证码或手动输入手机号完成登录。问题现…