计算机学习笔记 ArrayList和HashMap的具体用法和代码示例
import java.util.ArrayList; import java.util.HashMap;第一部分ArrayList动态数组1. 核心概念与内存机制定义ArrayList 是List接口的实现类底层基于动态数组实现。与普通数组不同它没有固定大小的限制可以自动扩容。核心特性随机访问极快基于数组下标获取和修改元素的时间复杂度为 $O(1)$。插入/删除较慢在中间位置插入或删除元素时需要移动后续所有元素时间复杂度为 $O(n)$。泛型限制只能存储引用数据类型基本数据类型如int必须使用包装类如Integer。2. 常用方法详解与代码示例①add(E e)/add(int index, E element)用法将元素追加到列表末尾或在指定位置插入元素。插入时该位置及后续元素会向后移动一位。ArrayListString list new ArrayList(); list.add(Apple); list.add(Banana); list.add(1, Cherry); // 在索引1处插入Banana后移 // 结果: [Apple, Cherry, Banana]②get(int index)用法获取指定索引处的元素索引从0开始。String fruit list.get(1); // 获取索引1的元素 System.out.println(fruit); // Cherry③set(int index, E element)用法替换指定索引处的元素并返回被替换的旧元素。String old list.set(1, Orange); System.out.println(old); // Cherry System.out.println(list); // [Apple, Orange, Banana]④remove(int index)/remove(Object o)用法按索引删除返回被删元素或按对象删除返回布尔值。list.remove(0); // 删除索引0的元素Apple list.remove(Banana); // 删除值为Banana的元素⑤size()/isEmpty()/clear()用法获取元素个数、判断是否为空、清空所有元素。System.out.println(list.size()); // 元素个数 System.out.println(list.isEmpty()); // 是否为空 list.clear(); // 清空列表⑥contains(Object o)用法判断列表中是否包含指定元素返回布尔值。boolean has list.contains(Apple); // true⑦indexOf(Object o)/lastIndexOf(Object o)用法返回元素第一次/最后一次出现的索引未找到返回 -1。int idx list.indexOf(Cherry);⑧subList(int fromIndex, int toIndex)用法截取部分元素包头不包尾。注意返回的是原列表的视图修改子列表会影响原列表。ListString sub list.subList(1, 3);3. ArrayList的遍历方式ArrayListString fruits new ArrayList(); fruits.add(Apple); fruits.add(Banana); fruits.add(Orange); // 方式1普通for循环适合需要索引的场景 for (int i 0; i fruits.size(); i) { System.out.println(fruits.get(i)); } // 方式2增强for-each推荐简洁安全 for (String fruit : fruits) { System.out.println(fruit); }4. 动态扩容机制当添加元素导致size 容量时ArrayList 会自动扩容。新容量通常为原容量的 1.5 倍oldCapacity (oldCapacity 1)。如果预知数据量可在构造时指定初始容量以避免频繁扩容。第二部分HashMap哈希表1. 核心概念与内存机制定义HashMap 实现了Map接口基于哈希表数组 链表 红黑树实现用于存储键值对Key-Value。核心特性Key 唯一且无序不允许重复键不保证存储顺序。允许 Null允许一个 null 键和多个 null 值。高效查找增删改查的平均时间复杂度为 $O(1)$。非线程安全多线程环境下应使用ConcurrentHashMap。2. 底层工作原理哈希计算对 Key 调用hashCode()计算哈希值确定在数组中的存储位置桶。冲突处理若多个 Key 落入同一个桶JDK 1.8 采用链表存储当链表长度超过8且数组长度 ≥ 64 时链表转为红黑树以提升查找效率。扩容机制当元素数量超过容量 × 加载因子(默认0.75)时触发扩容新容量为原来的2倍所有元素需重新计算位置。3. 常用方法详解与代码示例①put(K key, V value)用法添加或更新键值对。若 Key 已存在覆盖旧值并返回旧值不存在则返回 null。HashMapString, Integer map new HashMap(); map.put(Tom, 90); Integer old map.put(Tom, 95); // 覆盖old 90②get(Object key)/getOrDefault(K key, V defaultValue)用法根据 Key 获取 Value。若 Key 不存在get返回 nullgetOrDefault返回指定的默认值。int score map.getOrDefault(Jerry, 0); // Jerry不存在返回0③remove(Object key)用法删除指定 Key 的键值对返回被删除的 Value。map.remove(Tom);④containsKey(Object key)/containsValue(Object value)用法判断是否包含指定的 Key 或 Value。boolean hasKey map.containsKey(Tom);⑤size()/isEmpty()/clear()用法获取键值对数量、判空、清空。int count map.size();⑥keySet()/values()/entrySet()用法获取所有 Key 的集合、所有 Value 的集合、所有键值对的集合。SetString keys map.keySet(); CollectionInteger vals map.values(); SetMap.EntryString, Integer entries map.entrySet();4. HashMap的遍历方式HashMapString, Integer map new HashMap(); map.put(Apple, 5); map.put(Banana, 3); // 推荐方式遍历 entrySet性能最优 for (Map.EntryString, Integer entry : map.entrySet()) { System.out.println(entry.getKey() entry.getValue()); }核心对比总结对比维度ArrayListHashMap数据结构动态数组哈希表数组链表红黑树存储方式单列元素有序键值对Key唯一无序核心操作add(),get(index)put(),get(key)查找效率适用场景频繁按索引访问、尾部追加快速按键查找、去重映射

相关新闻

Java构建棋牌H5:高效开发实战指南

Java构建棋牌H5:高效开发实战指南

在技术开发这个范畴里, 专门聚焦于特定的工具, 进而深入地去发掘它的潜在能力, 常常能够带来出乎预料的效率以及自由度。对于那些期望构建棋牌类H5应用的个人或者小团队来讲, 深入地掌握JAVA这个成熟又稳定的技术栈, 能够成为一种高效且可把控的达成途径。这种做法着重于对核心…

2026/10/5 6:35:46 阅读更多 →
小熊猫Dev-C++:如何用5分钟搭建高效的C++学习环境

小熊猫Dev-C++:如何用5分钟搭建高效的C++学习环境

小熊猫Dev-C:如何用5分钟搭建高效的C学习环境 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 你是否在为C开发环境的配置而烦恼?是否觉得传统的IDE太过复杂,安装过程繁琐…

2026/10/16 23:30:11 阅读更多 →
windows网络适配器驱动开发-WiFiCx QoS R1 技术(三)

windows网络适配器驱动开发-WiFiCx QoS R1 技术(三)

第三章 镜像流分类服务(MSCS)3.1 MSCS 概述镜像流分类服务(Mirrored Stream Classification Service,MSCS)是 WFA Wi‑Fi QoS 管理规范第 3.1 节定义的功能。MSCS 为客户端设备上的应用提供了一种简单的方法来请求双向…

2026/10/16 3:32:27 阅读更多 →

最新新闻

从补码到整数溢出:理解计算机中的二进制位模式与类型解释

从补码到整数溢出:理解计算机中的二进制位模式与类型解释

1. 先从一次“诡异”的减一操作聊起大概很多人在写倒计时逻辑时都遇到过这种见鬼的事:一个普通的整数变量,减到 0 之后继续减,下一瞬间变成了 4294967295。第一次看到这个数字时我还以为程序算错了,甚至怀疑是内存被改。后来静下心…

2026/10/17 3:26:50 阅读更多 →
GD32F470六路串口并行驱动:DMA双缓冲+IDLE中断零丢包方案

GD32F470六路串口并行驱动:DMA双缓冲+IDLE中断零丢包方案

简介:本资源是一套基于GD32F470高性能MCU实现六路UART异步串口通信的完整嵌入式工程,面向嵌入式初学者、GD32开发工程师及高校电赛/课程设计实践者,重点解决多串口并发收发中中断优先级配置、环形缓冲区管理、流控制策略与中断服务程序可靠性…

2026/10/17 3:26:50 阅读更多 →
Activiti ACT_RU_JOB表深度拆解:定时器、异步作业与运维排查实战

Activiti ACT_RU_JOB表深度拆解:定时器、异步作业与运维排查实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 3:26:50 阅读更多 →
GD32F470六路串口实战:工业级非阻塞通信中间件设计

GD32F470六路串口实战:工业级非阻塞通信中间件设计

简介:本资源是一套基于GD32F470高性能MCU实现六路UART异步串口通信的完整嵌入式工程,面向嵌入式初学者、GD32开发工程师及高校电赛/课程设计实践者,解决多串口并发收发中中断优先级配置、环形缓冲区管理、流控制与中断服务高效响应等典型难点…

2026/10/17 3:26:50 阅读更多 →
PT模拟物联网设备数据上云:本地桥接脚本全解析

PT模拟物联网设备数据上云:本地桥接脚本全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 3:26:50 阅读更多 →
微信本地聊天记录结构化导出:从.db解密到Obsidian双链笔记

微信本地聊天记录结构化导出:从.db解密到Obsidian双链笔记

1. 项目本质与真实价值:不是“微信开源”,而是打通本地知识流的桥梁很多人看到标题里的“开源微信流”第一反应是:微信官方把聊天记录协议开源了?或者有某个项目逆向出了微信PC端的完整通信协议?这完全是个误解。微信作…

2026/10/17 3:25:49 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →