一、背景知识
面试过程中面试官的死亡连:你说你看过很多源码是吗?那你说说hashmap的底层实现?什么条件下会自动扩容的?为什么要有 红黑树?什么条件下会有?扩容因子为什么是0.75有研究过吗? 下来就来彻底了解一下HashMap吧!
1、什么是Map?
Map是一种集合接口,提供了一系列操作K-V的方法,HashMap、HashTable都是Map接口的实现类。
2、什么是Hash?
Hash 音译为 “哈希” ,也叫 “散列” 。
哈希的本质是通过哈希函数对原始数据进行有损压缩,得到固定长度的输出,即哈希值,通过哈希值唯一标识原始数据。
若不同的原始数据被有损压缩后产生了相同的结果,该现象称为哈希碰撞。
3、什么是哈希表?
哈希表是一种数据结构,它可以提供较高的存取效率。
【原理】
1、向哈希表插入元素时,会先根据哈希函数计算K对应的存储位置,再put元素;
2、查询时,根据哈希函数计算K对应的存储位置,直接访存储位置获取元素,查询效率高。
【基本概念】
4、什么是HashMap?
HashMap继承了AbstractMap类,是Map接口的一种实现,用于存储K-V数据结构的元素,底层通过哈希表实现了较快的存取效率。
5、如何使用HashMap?
Map map = new HashMap(); // 创建HashMap对象
map.put("数学", 91 ); // 存放元素
map.put("语文", 92 ); // 存放元素
map.put("物理", 94 ); // 存放元素
int score = map.get("语文"); // 获取元素值
for(Object key : map.keySet()) {
// 遍历元素
System.out.println("科目"key + "的成绩是" + map.get(key));
}
map.remove("物理"); // 删除元素
6、HashMap有哪些核心参数?
1、默认初始化容量
static fina