当前位置: 首页 > news >正文

Java高级Day23-HashMap

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.lryc.cn/news/418570.html

相关文章:

  • 【学术会议征稿】第四届电气工程与计算机技术国际学术会议(ICEECT2024)
  • Spring boot tomcat使用自定义线程池监控线程数量告警
  • K8S子节点加入主节点访问MaterAPI报错:Unauthorized 401
  • C++ Poco服务端框架中JSON的使用
  • leetcode787. K 站中转内最便宜的航班——优先队列优化的Dijkstra算法+剪枝
  • 赛盈分销亮相AI科技大会暨亚马逊新增长大会,与企业共话跨境品牌发展新机遇!
  • Nacos-配置中心
  • ava中的文件操作、IO流、递归和字符集
  • 生成式人工智能安全评估体系构建
  • NRBO-XGBoost分类 基于牛顿-拉夫逊优化算法[24年最新算法]-XGBoost多特征分类预测+交叉验证
  • synchronized实现原理及优化
  • NLP 之词的表示与语言模型
  • 每天一个数据分析题(四百七十一)- 假设检验
  • 《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-04-数据访问层设计
  • 【视觉SLAM】 十四讲ch7习题
  • K-近邻算法(二)
  • WPF学习(2)-UniformGrid控件(均分布局)+StackPanel控件(栈式布局)
  • ANTSDR E310
  • MySQL 5.7 DDL 与 GH-OST 对比分析
  • 【Python】爬取网易新闻今日热点列表数据并导出
  • 软件设计之HTML5
  • CnosDB 元数据集群 – 分布式时序数据库的大脑
  • 白骑士的Matlab教学进阶篇 2.5 Simulink
  • linux安装anaconda
  • python装饰器作用和使用场景
  • Apache Tomcat 7下载、安装、环境变量配置 详细教程
  • SQL注入实例(sqli-labs/less-20)
  • Linux Shell面试题大全及参考答案(3万字长文)
  • 速盾:cdn优化静态资源加载速度机制
  • 04.C++类和对象(中)