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

Java 第五章第六章 案例教程

Java 第五章第六章 案例教程说明:本教程承接前四章,深入讲解Java集合框架与输入输出流。第五章聚焦集合框架(List、Set、Map、迭代器、Collections工具类、泛型);第六章讲解输入输出流(File类、字节流、字符流、缓冲流、对象序列化、Properties)。通过“学生管理系统升级”和“文件配置读写”实战串联知识点。第一部分:第五章 集合框架一、背景故事:小杨需要更强大的数据容器小杨的学生成绩管理系统使用数组存储学生,但数组长度固定,无法动态增减。他需要能够自动扩容、方便插入删除的容器,还要能按学号快速查找学生。Java 集合框架提供了 ArrayList、HashSet、HashMap 等强大工具。二、集合框架概述Java 集合框架(Collection Framework)是一组用于存储和操作对象的接口和类,位于 java.util 包。核心接口层次:Iterable (接口) │ └── Collection (接口) ├── List (接口) —— 有序、可重复 │ ├── ArrayList (类) │ ├── LinkedList (类) │ └── Vector (类,线程安全) └── Set (接口) —— 无序、不可重复 ├── HashSet (类) ├── LinkedHashSet (类) —— 保持插入顺序 └── TreeSet (类) —— 排序 Map (接口) —— 键值对,键不可重复 ├── HashMap (类) ├── LinkedHashMap (类) —— 保持插入顺序 └── TreeMap (类) —— 按键排序三、List 接口特点:有序(按插入顺序)、可重复、有索引。3.1 ArrayList(动态数组)底层是数组,查询快,增删慢(末尾增删快)。importjava.util.ArrayList;importjava.util.List;ListStringnames=newArrayList();// 增names.add("张三");names.add("李四");names.add(1,"王五");// 插入索引1// 查Stringfirst=names.get(0);// 改names.set(0,"赵六");// 删names.remove(1);// 按索引删除names.remove("李四");// 按对象删除// 遍历for(inti=0;inames.size();i++){System.out.println(names.get(i));}for(Strings:names){System.out.println(s);}// 其他方法booleancontains=names.contains("张三");intindex=names.indexOf("李四");booleanempty=names.isEmpty();names.clear();// 清空3.2 LinkedList(双向链表)底层是链表,增删快(尤其是头尾),查询慢。LinkedListStringqueue=newLinkedList();queue.addLast("A");// 尾部添加queue.addFirst("B");// 头部添加Stringfirst=queue.removeFirst();// 弹出头部Stringlast=queue.removeLast();// 弹出尾部3.3 Vector(线程安全,但性能差,已不推荐)四、Set 接口特点:无序、元素不可重复(通过 equals() 和 hashCode() 判断)。4.1 HashSet(哈希表)SetStringset=newHashSet();set.add("苹果");set.add("香蕉");set.add("苹果");// 重复,不会添加System.out.println(set.size());// 2for(Strings:set){System.out.println(s);}4.2 LinkedHashSet保持插入顺序。SetStringlhs=newLinkedHashSet();lhs.add("C");lhs.add("A");lhs.add("B");System.out.println(lhs);// [C, A, B] 插入顺序4.3 TreeSet(排序)元素必须可比较(实现 Comparable 接口),或传入 Comparator。SetIntegernums=newTreeSet();nums.add(5);nums.add(2);nums.add(8);System.out.println(nums);// [2, 5, 8] 自然排序五、Map 接口存储键值对,键唯一,值可重复。5.1 HashMapMapString,Integerscores=newHashMap();// 添加scores.put("张三",85);scores.put("李四",92);scores.put("张三",90);// 覆盖旧值// 获取intscore=scores.get("张三");// 90Integerscore2=scores.get("王五");// null,不存在// 遍历 key 和 valuefor(Stringname:scores.keySet()){System.out.println(name+" - "+scores.get(name));}for(Map
http://www.gsyq.cn/news/1378960.html

相关文章:

  • 龙岩6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • 在好靶场的WEB海洋遨游
  • 终极指南:5步精通开源网页版三国杀无名杀
  • Whisper-WebUI:一站式语音转字幕解决方案在Mac上的完美部署指南
  • 亳州6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • 从零到一:163MusicLyrics跨平台歌词提取工具的完整使用指南
  • 实战指南:Happy Island Designer 的深度应用与优化
  • Safe Exam Browser 虚拟化检测绕过技术深度实践
  • 《Java 100 天进阶之路》第32篇:Java常用工具类(Objects、Collections、Arrays深入)
  • Python渗透测试开源项目源码精读指南:从状态机到零拷贝解析
  • 手机HTTPS抓包失败的根源与系统化排障指南
  • C++特有的bool变量使用
  • 在C++中测量代码执行时间的两种方法
  • 江苏启东寄快递省钱指南|全网高性价比寄件渠道盘点,日常寄件少花冤枉钱 - 时讯资讯
  • Android Compose 图层的合成 : BlendMode
  • Android Compose 离屏缓冲 : CompositingStrategy.Offscreen
  • 027、内存带宽瓶颈:如何设计NPU避免“内存墙”?
  • 星盘接口开发文档:推进盘接口指南
  • GESP6级C++考试语法知识(二十八、广度优先搜索(三、层级 BFS))
  • 告别杂乱GitHub和文档:手把手教你用WRITE-BUG数字空间管理小组编程项目
  • 网络运维与网络安全 阶段一 基础篇二十
  • BME280传感器扩展板设计:兼容I2C/SPI接口与可配置电源方案详解
  • 互联网大厂Java面试:从Java SE到Spring Boot的全面探讨
  • 5分钟彻底解决网盘限速烦恼:开源工具LinkSwift完全使用指南
  • 【YOLO目标检测全栈实战】77 模型剪枝:让YOLO在边缘设备上“瘦身”的硬核实践
  • Apifox 测试项目实操
  • Apple Silicon Mac 电池管理的终极解决方案:Battery Toolkit 完整指南
  • QQ群数据采集终极教程:5分钟掌握批量抓取技巧
  • 抖音批量下载工具:高效获取用户主页全作品的专业解决方案
  • 从电路图到成品板:用AD和嘉立创搞定你的第一块CC2530开发板(附完整BOM清单)