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
英文地址,請注明出處:http://en.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;導致用戶需要改用短信驗證碼或手動輸入手機號完成登錄。問題現…