【面经总结】Java集合 - Map
Map 概述
Map 架构

HashMap
要点
- 以 散列(哈希表) 方式存储键值对,访问速度快
- 没有顺序性
- 允许使用空值和空键
- 有两个影响其性能的参数:初始容量和负载因子。
- 初始容量:哈希表创建时的容量
- 负载因子:其容量自动扩容之前被允许的最大饱和量
- 不是线程安全的
Java7
数据结构
实现机制:**数组 + 链表,**通过链表解决哈希冲突。
- table:存储 K-V 的数组
- size:容量,初始为 16
- loadFactor:负载因子,默认为 0.75(元素个数超过容量的 75% 会触发自动扩容,扩容为原始的 2 倍)

获取元素 get
- 通过 key 的哈希计算存储位置
- 遍历链表

计算 hash 方式:高16位不变,低16位和高16位做异或
static final int hash(Object key) {int h;return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
计算下标的时候,是使用 & 位操作,而非求余
(n - 1) & hash
优点:能使用32位计算哈希,避免因为高位没有参与下标的计算而碰撞
添加元素 put
- 通过 key 的哈希计算存储位置
- 查找 key 是否存在
- 存在:覆盖 Value
- 不存在:放到桶里 or 插入链表(头插法)

删除元素 remove
找到指定数据并修改链表引用

Java8
- 实现机制:数组 + 链表 + 红黑树
- 当容量达到 64,且元素达到 8 个时会将链表转为红黑树
- 将链表插入方式改为尾插法(解决循环链表)

链表查询复杂度取决于链表长度,为 O(n)。为了降低开销,Java8 中当容量达到 64,且元素达到 8 个时会转为红黑树,降低复杂度为 O(logN)
Java7 使用 Entry 表示数据节点,Java8 使用 Node 和 TreeNode。
LinkedHashMap
在 HashMap 的基础上,维护一个双向链表,实现插入顺序

TreeMap
- 实现机制:红黑树
- 有序(默认为升序)
- Key 需要定义比较逻辑
- 实现 Comparable 接口
- 重写 compareTo() 方法
相关文章:
【面经总结】Java集合 - Map
Map 概述 Map 架构 HashMap 要点 以 散列(哈希表) 方式存储键值对,访问速度快没有顺序性允许使用空值和空键有两个影响其性能的参数:初始容量和负载因子。 初始容量:哈希表创建时的容量负载因子:其容量自动扩容之前被允许的最大…...
CompletableFuture方法介绍及代码示例
CompletableFuture 是 Java 8 引入的一个类,用于支持异步编程。它实现了 Future 接口,并提供了非常强大的功能来处理异步操作。下面是 CompletableFuture 的一些关键内部方法及其详细解释。 基础方法 1. supplyAsync 和 runAsync: - supplyA…...
基于springboot的宠物商城网站
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的宠物商城网站,java项目…...
DM存储ontap系统修改管理IP
存储已配置完成在使用,修改管理ip不会影响生产 旧管理IP新管理IP192.0.2.1/24192.0.10.1/24192.0.2.2/24192.0.10.2/24192.0.2.3/24192.0.10.3/24 旧网关:192.0.2.254 新网关:192.0.10.254 查看现有的管理IP信息 cluster1::> network …...
Web前端商业素材:挖掘价值,释放创意的无限可能
Web前端商业素材:挖掘价值,释放创意的无限可能 在数字化时代,Web前端作为用户与互联网世界交互的桥梁,其重要性不言而喻。而商业素材,作为Web前端设计的重要组成部分,更是承载着品牌形象、传递商业信息的重…...
LeetCode206-反转链表
题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* …...
5000天后的世界
为何可以预见未来 1993年,在互联网的黎明时代,凯文凯利创办了《连线》杂志。他曾经采访过以比尔盖茨、史蒂夫乔布斯、杰夫贝佐斯为代表的一众风云创业家。《连线》杂志是全球发行的世界著名杂志,一直致力于报道科学技术带来的经济、社会变革…...
Photoshop中颜色与色调的调整
Photoshop中颜色与色调的调整 Photoshop中的颜色模式RGB模式灰度模式位图模式索引模式CMYK模式Lab模式 Photoshop中的颜色/色调调整命令颜色/色调调整命令的分类亮度/对比度调整命令色阶命令曲线命令曝光度命令自然饱和度命令色相/饱和度命令色彩平衡命令照片滤镜调整命令通道混…...
【退役之重学Java】终结篇,暂别 Java !
一、为什么退役后要重学 Java 应该说还是对技术抱有热情的,而 Java 是大学时期的主修方向,所以退役的半年之后选择重学 Java,至于此前半年的经历,有机会再给大家讲述吧。 二、重学 Java 的经历 在三月的尾巴,开始重…...
查找——顺序查找和折半查找
查找 关于顺序查找和折半查找,可点击此处进入旧金山大学提供的动画演示网站。 顺序查找 顺序查找又称线性查找。它对于顺序表和链表都是适用的。对于顺序表,可通过数组下标递增来顺序扫描每个元素;对于链表,则通过指针next来…...
Bio-Info每日一题:Rosalind-07-Mendel‘s First Law(孟德尔第一定律 python实现)
🎉 进入生物信息学的世界,与Rosalind一起探索吧!🧬 Rosalind是一个在线平台,专为学习和实践生物信息学而设计。该平台提供了一系列循序渐进的编程挑战,帮助用户从基础到高级掌握生物信息学知识。无论你是初…...
C++ 47 之 函数调用运算符重载
#include <iostream> #include <string> using namespace std;class MyPrint{ public:// 重载小括号() 重载谁operator后就紧跟谁的符号void operator()(string txt){cout << txt << endl;} };class MyAdd{ public:int operator()(int a, int b){retur…...
[Qt的学习日常]--常用控件1
前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、什么是控…...
模型实战(23)之 yolov10 使用总结及训练自己的数据集
yolov10 使用总结及训练自己的数据集 0. yolov10 原理分析 此处参考:https://blog.csdn.net/CVHub/article/details/139204248论文:https://arxiv.org/pdf/2405.14458源码:https://github.com/THU-MIG/yolov10 论文原理分析: 创新: 双标签分配策略 众所周知,标签分配策略…...
AIRNet模型使用与代码分析(All-In-One Image Restoration Network)
AIRNet提出了一种较为简易的pipeline,以单一网络结构应对多种任务需求(不同类型,不同程度)。但在效果上看,ALL-In-One是不如One-By-One的,且本文方法的亮点是batch内选择patch进行对比学习。在与sota对比上…...
欧洲杯“球迷狂欢趴”开启,容声带来“健康养鲜”新理念
6月15日,容声冰箱在深圳举行了异彩纷呈的“欧洲杯养鲜补给站 球迷狂欢趴”系列活动。 容声国内营销总经理韩栋现场发布“以品质领先 为健康养鲜”的主题内容,强调容声将以健康养鲜技术产品的升级迭代,满足用户品质生活需求。 作为有着41年发…...
人工智能对零售业的影响
机器人、人工智能相关领域 news/events (专栏目录) 本文目录 一、人工智能如何改变零售格局二、利用人工智能实现购物体验自动化三、利用人工智能改善库存管理四、通过人工智能解决方案增强客户服务五、利用人工智能分析消费者行为六、利用 AI 打造个性化…...
Spring Boot + EasyExcel + SqlServer 进行批量处理数据
前言 在日常开发和工作中,我们可能要根据用户上传的文件做一系列的处理,本篇文章就以Excel表格文件为例,模拟用户上传Excel文件,讲述后端如何高效的进行数据的处理。 一.引入 EasyExcel 依赖 <!-- https://mvnrepository.com/…...
深入理解指针(四)
目录 1. 回调函数是什么? 2. qsort使用举例 2.1冒泡排序 2.2使用qsort函数排序整型数据 2.3 使用qsort排序结构数据(名字) 2.4 使用qsort排序结构数据(年龄) 3. qsort函数的模拟实现 1. 回调函数是什么? 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数…...
k-means聚类模型的优缺点
一、k-means聚类模型的优点 1. 简单高效:k-means算法思想简单直观,易于实现。它通过迭代计算样本点与聚类中心之间的距离,并不断调整聚类中心的位置,直至满足终止条件。由于其计算过程相对直接,所以具有较高的执行效率…...
3个步骤解决Mac Boot Camp驱动部署难题:Brigadier自动化方案详解
3个步骤解决Mac Boot Camp驱动部署难题:Brigadier自动化方案详解 【免费下载链接】brigadier Fetch and install Boot Camp ESDs with ease. 项目地址: https://gitcode.com/gh_mirrors/bri/brigadier 还在为Mac电脑安装Windows系统后的驱动问题而烦恼吗&…...
2026年医疗卫生/护理求职AI工具横评:白衣天使的求职神器大比拼
导语 2026年,医疗卫生行业依然是最具社会价值和就业稳定性的行业之一。随着中国老龄化加速,医护人员需求持续扩大,仅公立医院护士岗位需求量就突破200万。然而,医护求职并不轻松:编制紧张、规培政策复杂、职称考试压力…...
云端AI模型基准测试:从参数迷信到效能优先的选型实战
1. 项目概述:一次颠覆认知的云端AI模型基准测试作为一名长期在本地部署AI智能体(我用的是OpenClaw)的实践者,模型选型一直是我工作流中的核心决策。过去几个月,我默认使用的都是阿里云出品的qwen3.5:397b-cloud。这个模…...
打造高效命令行天气查询工具:基于KMI/IRM的比利时天气CLI实践
1. 项目概述:一个为终端而生的比利时天气查询工具 如果你和我一样,是个重度命令行用户,同时又对窗外天气是晴是雨有点在意,那你肯定也烦透了为了看个天气预报还得打开浏览器、点开某个天气网站或者解锁手机。这种打断工作流的感觉…...
正点原子 STM32MP257 同构多核架构下的 ADC 电压采集与处理应用开发实战
在嵌入式系统中,ADC模拟电压的读取是常见的需求。如何高效、并发、且可控地完成数据采集与处理?本篇文章通过双线程分别绑定在 Linux 系统的不同 CPU 核心上,采集 /sys/bus/iio 接口的 ADC 原始值与缩放系数 scale,并在另一个核上…...
Sketch Find and Replace插件终极指南:如何快速批量替换设计文本
Sketch Find and Replace插件终极指南:如何快速批量替换设计文本 【免费下载链接】Sketch-Find-And-Replace Sketch plugin to do a find and replace on text within layers 项目地址: https://gitcode.com/gh_mirrors/sk/Sketch-Find-And-Replace 你是否曾…...
告别格式烦恼:北航毕业论文LaTeX模板的5步终极指南
告别格式烦恼:北航毕业论文LaTeX模板的5步终极指南 【免费下载链接】BUAAthesis 北航毕设论文LaTeX模板 项目地址: https://gitcode.com/gh_mirrors/bu/BUAAthesis 还在为毕业论文格式调整而烦恼吗?想象一下,你已经花费数月时间完成了…...
IDEA里Artifact选war还是war exploded?一个设置解决Tomcat热部署难题
IDEA中Artifact选择:war与war exploded深度解析与热部署实战 每次修改完JSP页面后都要重启Tomcat?看着进度条缓慢加载,开发效率被硬生生拖慢。这可能是大多数Java Web开发者都经历过的痛苦。问题的根源往往藏在IDEA那个不起眼的Artifact配置选…...
Cursor编辑器配置重置工具:自动化清理与恢复出厂设置
1. 项目概述与核心价值 最近在折腾代码编辑器,特别是像 Cursor 这类深度整合了 AI 能力的 IDE,发现一个挺有意思但容易被忽略的问题: 编辑器配置的“熵增” 。简单来说,就是你用久了之后,各种插件、主题、快捷键、代…...
别再死记硬背了!用一块74283芯片搞定所有BCD码转换(附实战练习题)
用74283芯片玩转BCD码转换:从原理到实战的终极指南 在数字电路设计与计算机组成原理的学习中,BCD码转换一直是让许多学生头疼的"拦路虎"。传统的死记硬背方法不仅效率低下,更无法应对考试中千变万化的题型。本文将彻底改变这一现状…...
