计算机学习笔记 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/8/5 9:51:14 阅读更多 →
小熊猫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/8/5 9:50:13 阅读更多 →
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/8/5 9:50:13 阅读更多 →

最新新闻

从零搭建数据机房监控可视化系统:Telegraf+InfluxDB+Grafana实战

从零搭建数据机房监控可视化系统:Telegraf+InfluxDB+Grafana实战

在数据机房运维工作中,你是否曾面临这样的困境:服务器状态、网络流量、温湿度等海量监控数据分散在各个孤立的系统中,故障告警滞后,排查问题如同大海捞针,难以形成全局态势感知。一个集中、直观、实时的可视化监控系统…

2026/8/5 10:29:42 阅读更多 →
Ubuntu下Unreal Engine源码集成Cesium插件编译指南与问题解决

Ubuntu下Unreal Engine源码集成Cesium插件编译指南与问题解决

1. 项目概述与核心目标最近在Ubuntu 20.04.1上折腾Unreal Engine,想把CesiumForUnreal这个强大的地理空间插件给集成进去,结果发现这趟水比想象中深得多。如果你也打算在Linux环境下,特别是Ubuntu上,为UE引擎深度集成Cesium插件&a…

2026/8/5 10:29:42 阅读更多 →
Unity入门笔记体系构建:从碎片化学习到系统化知识库

Unity入门笔记体系构建:从碎片化学习到系统化知识库

1. 从“Hello World”到“Hello Unity”:为什么你的笔记需要重新定义如果你刚刚打开Unity Hub,看着那个新建项目的按钮,心里盘算着“今天我要学会Unity”,然后一头扎进某个教程,跟着敲了三天代码,最后发现自…

2026/8/5 10:29:42 阅读更多 →
44.SAP ABAP SELECT-OPTIONS 动态日期默认值设置方法

44.SAP ABAP SELECT-OPTIONS 动态日期默认值设置方法

摘要 SAP系统作为企业资源计划(ERP)领域的工业标准,其技术栈涵盖ABAP编程、数据字典(Data Dictionary)、业务流程配置及接口集成。本文从工程化视角出发,系统阐述SAP开发的核心原理,提供一套可落地的完整ABAP程序示例,并针对常见问题给出避坑指南。文章不涉及空泛理论…

2026/8/5 10:29:42 阅读更多 →
Unity动态音频加载实战:告别Resources文件夹,实现高效资源管理

Unity动态音频加载实战:告别Resources文件夹,实现高效资源管理

1. 项目概述&#xff1a;告别Resources文件夹&#xff0c;拥抱动态音频加载在Unity项目里处理音频&#xff0c;你是不是还在用老办法&#xff1f;把一堆.mp3、.wav文件拖进Resources文件夹&#xff0c;然后在代码里写死路径&#xff0c;用Resources.Load<AudioClip>来加载…

2026/8/5 10:29:42 阅读更多 →
47.基于 NetWeaver 引擎!静态类型编程 + 批量数据处理生产级方案

47.基于 NetWeaver 引擎!静态类型编程 + 批量数据处理生产级方案

摘要 SAP系统是企业级应用的事实标准,ABAP作为其原生开发语言,承载了绝大多数业务定制需求。本文从ABAP底层执行机制出发,深入解析数据类型、内表操作、SQL与性能优化等核心原理,并给出可直接运行的完整代码示例。全文采用工程化视角,帮助开发者从"会写"走向&q…

2026/8/5 10:28:42 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架&#xff0c;为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能&#xff0c;同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求&#xff1a;通孔焊盘 十字花&#xff1b;过孔 Via 实心直连&#xff1b;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑&#xff1a;全部统一十字&#xff0c;导致接地过孔阻抗高、大电流发热&#xff01; 一、快捷键打开规则 PCB 界面按下&#xff1a;D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用&#xff0c;其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流&#xff1a;一个核心问题的诞生想象一下&#xff0c;你是一个城市供水系统的总工程师。你的城市有多个水源&#xff08;水库&#xff09;&#xff0c;需要通过一个复杂的地下管道网络&#xff0c;将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起&#xff1a;为什么我们需要互相关几年前&#xff0c;我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号&#xff0c;理论上它们接收到的声音波形应该非常相似&#xff0c;只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →