计算机学习笔记 ArrayList和HashMap的具体用法和代码示例

发布时间:2026/11/14 18:16:18

计算机学习笔记 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)查找效率适用场景频繁按索引访问、尾部追加快速按键查找、去重映射
延伸阅读

更多相关文章

2026/11/13 14:14:23

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

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

2026/11/13 23:14:39

ChatGPT每日使用指南:从API配置到工作流集成的实践

1. 为什么“每日使用”比“偶尔尝试”更能体现ChatGPT的价值OpenAI高管呼吁每日使用ChatGPT,这背后不是一个简单的营销口号,而是一个关于如何真正用好AI工具的实践建议。很多人把ChatGPT当作一个“玩具”或“搜索引擎替代品”,只在遇到难题时…

2026/11/14 23:22:17

丛台高压电工证怎么考?郑州报考避坑指南全解析

丛台高压电工证怎么考?郑州报考避坑指南全解析 之前考的证在外省能不能转过来?这几乎是所有想在河北从业的电工朋友最先问的问题,尤其是已经在外地考过证,准备回河北发展的朋友。今天咱们就来聊聊【丛台高压电工证】的那些事儿,看看在郑州报考高压电工证…

2026/11/14 23:22:17

新加坡 电工证办理证全国通用吗

新加坡电工证办理真实经历:外省证能转过来吗?老电工给你说清楚 之前考的证在外省能不能转过来?我之前就在周口劳务班组干了8年,也见过太多人因为证书地区问题耽误了工作。今天就从 真实经历 说起,帮你理清【新加坡…

2026/11/14 23:22:17

郑州电工证审验在哪里 电工证值不值得考

郑州电工证审验在哪里 电工证值不值得考 之前考的证在外省能不能转过来?这是很多在外地打工的电工兄弟最关心的问题。特别是像你们这种在焦作从事公路工程的,跑工地、换地方频繁,证能不能跟着走就成了头等大事。今天我们就来聊聊【郑州电工证审验在哪里】…

2026/11/14 23:22:17

清远电工证在哪里办理 值不值得考?实操考试心里没底怕挂科

清远电工证在哪里办理 值不值得考?实操考试心里没底怕挂科 实操考试心里没底怕挂科,是很多准备报考清远电工证的人共同的困扰。你是不是也担心自己操作不规范、考试紧张,结果一不小心就挂科?别急,这篇内容就从 清远电工证在哪里办理…

2026/11/13 22:33:32

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/14 0:06:39

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来 之前考的证在外省能不能转过来?这个问题我太熟悉了,作为一名干了十几年的特种作业证书办理从业者,每年都会遇到不少像你一样在外地考了证,回来却发现无法直接使用的学员。别急,今天我就…

2026/11/14 0:06:39

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,你不是一个人。在信阳浉河区,很多刚进入工地的电工都面临这样的困境:工作强度大,时间碎片化,根本没有系统复习考试的机会。但电工证是上岗的硬门槛,…

2026/11/13 22:32:11

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/13 12:14:39

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑