Java高级Day23-HashMap

news/2024/12/22 23:08:18/

74.HashMap

  1. Map接口常用实现类:HashMap、Hashtable和Properties

  2. HashMap是Map接口使用频率最高的实现类

  3. HashMap是以key-value对的方式来存储数据

  4. key不能重复,但是值可以重复,允许使用null健和null值

  5. 如果添加相同的key,会覆盖原来的key

  6. 与HashSet一样,不保证映射的顺序,因为底层是以hash表的方式来存储的

  7. HashMap没有实现同步,因此线程是不安全的,方法没有做同步互斥的操作,没有synchronized

HashMap底层扩容机制:

  1. HashMap底层维护了Nod类型的数组table,默认为null

  2. 当创建对象时,将加载因子(loadfactor)初始化为0.75

  3. 当添加key-val时,通过key的哈希值得到在table的索引。然后判断该索引处是否有元素,如果没有元素直接添加。如果该索引处有元素,继续判断该元素的key是否和准入加入的key相等,如果相等,直接替换val;如果不相等需要判断是树结构还是链表结构,做出相应处理。如果添加时发现容量不够,需要扩容

  4. 第1次添加,则需要扩容table容量为16,临界值为12

  5. 以后再扩容,则需要扩容table为原来的2倍,临界值为原来的2倍,既24,以此类推

模拟HashMap触发扩容,树化情况

public class HelloJava {public static void main(String[] args) {HashMap hashMap = new HashMap();for (int i = 1;i <= 12;i++){hashMap.put(new A(i),"hello");}hashMap.put("aaa","bbb");System.out.println("hashMap=" + hashMap);}
}
​
class A{private int num;
​public A(int num) {this.num = num;}//所有的A对象的HashCode都是100@Overridepublic int hashCode() {return 100;}
​@Overridepublic String toString() {return "A{" +"num=" + num +'}';}
}

http://www.ppmy.cn/news/1506325.html

相关文章

交换机常用的贴片网络变压器,滤波器H5084NL / H82409S

华强盛电子导读千兆交换机&#xff1a; 199/2643/0038 在交换机行业中&#xff0c;常用的贴片网络变压器和滤波器型号会根据具体的应用需求、性能指标、成本考量等因素而有所不同。通常&#xff0c;这些器件需要满足网络通信中的高频传输、阻抗匹配、信号隔离、电磁兼容&…

5个适用于Linux系统的PDF转Word工具

凭借其跨平台和设备的统一标准、兼容性和规模小巧等主要优点&#xff0c;可携带文档格式&#xff08;PDF&#xff09;可谓最主流的文件格式之一。 市面上有许多查看PDF文件的强大工具&#xff0c;因此所有Linux系统的用户都可以根据自身喜好找到合适的PDF查看工具。然而&#x…

k8s核心架构分析

k8s核心概念概述 Kubernetes入门&#xff1a;掌握集群核心&#xff0c;释放容器潜能 技术爱好者们&#xff0c;CD集群的核心概念是构建、部署和管理容器化应用的基石。掌握这些概念&#xff0c;不仅助你深入理解技术细节&#xff0c;更能在CD集群中自如操作&#xff0c;无论是…

Unity复制资源目录并添加新的引用关系

有时候需要复制一个场景目录制作新的场景&#xff0c;打包场景也是独立资源&#xff0c;不希望资源复用。我们直接使用CtrlD复制资源&#xff0c;里面的预设&#xff0c;材质等都还是指向原有的&#xff0c;所以废话不多说&#xff0c;直接上代码。 操作窗口 首先是制作一个复…

K8S Helm

简述 Helm 是 Kubernetes 的开源包管理器。它提供了提供、共享和使用为 Kubernetes 构建的软件的能力。它允许开发者定义、‌打包、‌发布和管理Kubernetes应用资源&#xff0c;‌类似于Linux下的apt或yum包管理器。‌Helm3的架构主要包括Helm客户端、‌Chart仓库以及Kubernet…

MySQL学习(19):锁

1.什么是锁 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中&#xff0c;数据是供许多用户共享的资源&#xff0c;数据库必须保证数据并发访问的一致性、有效性&#xff0c;这就要靠锁来协调实现。 MySOL中的锁&#xff0c;分为以下三类&#xff1a; &am…

Open3D 三维重建-Poisson Surface Reconstruction (泊松曲面重建)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用 二、代码实现 2.1关键函数 2.1.1函数代码 2.1.2参数详解 2.1.3名词解释 2.2完整代码 三、实现效果 3.1原始点云 3.2重建后点云 3.3去除低密度点云 Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点…

AcWing 714. 连续奇数的和 1

给定两个整数 XX 和 YY&#xff0c;输出在他们之间&#xff08;不包括 XX 和 YY&#xff09;的所有奇数的和。 输入格式 第一行输入 XX&#xff0c;第二行输入 YY。 输出格式 输出一个整数&#xff0c;表示所有满足条件的奇数的和。 数据范围 −100≤X,Y≤100−100≤X,Y≤…