Java常见面试题:HashMap冲突

简介: HashMap中Hash冲突严重时会影响HashMap性能,该如何解决?

HashMap中Hash冲突严重时会影响HashMap性能,该如何解决?

在整个Hash存储过程之中,必须要明确两个实际问题:hashCode()与equals()两个方法。如果hashCode()相同,这个时候会查询equals(),不过一般在使用Map的时候都会考虑使用String来实现,所以在String实现的Key里面不存在这种复杂的概念,也就是说这样的概念只存在于自定义类里面,所以当Hash冲突严重时,首先去考虑equals()方法是否正常,那么在进行数据定位的时候会更加快速。

如果从实际的数据结构的算法来讲,真的有Hash冲突,那么就需要使用一些特定的处理方法:

(1) 开放定址法:为一个Hash冲突求一个地址序列;
(2) 链地址法:将所有Hash冲突的内容保存在一个链表里面(HashMap实现原理);
(3) 再哈希法:重新做一个Hash计算。

在HashMap源代码之中,主要观察Node类(子类定义的默认内部类)、MapEntry(内部接口)类,这两个都是内部类。

更多专业知识,面试技巧就在阿里云开发者社区,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

相关文章
|
2天前
|
Java
Java面向对象实践小结(含面试题)(下)
Java面向对象实践小结(含面试题)(下)
11 1
|
3天前
|
存储 安全 算法
【JAVA】HashMap扩容性能影响及优化策略
【JAVA】HashMap扩容性能影响及优化策略
|
2天前
|
设计模式 Java
Java面向对象实践小结(含面试题)(上)
Java面向对象实践小结(含面试题)
12 1
|
3天前
|
存储 Java 索引
【JAVA】HashMap的put()方法执行流程
【JAVA】HashMap的put()方法执行流程
|
4天前
|
JavaScript 前端开发 Java
【JAVA面试题】什么是引用传递?什么是值传递?
【JAVA面试题】什么是引用传递?什么是值传递?
|
4天前
|
Java 程序员
【JAVA面试题】基本类型的强制类型转换是否会丢失精度?引用类型的强制类型转换需要注意什么?
【JAVA面试题】基本类型的强制类型转换是否会丢失精度?引用类型的强制类型转换需要注意什么?
|
4天前
|
Java
【JAVA面试题】什么是深拷贝?什么是浅拷贝?
【JAVA面试题】什么是深拷贝?什么是浅拷贝?
|
6天前
|
存储 安全 Java
[Java基础面试题] Map 接口相关
[Java基础面试题] Map 接口相关
|
6天前
|
Java
[Java 面试题] ArrayList篇
[Java 面试题] ArrayList篇
|
6天前
|
Java 调度
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
36 1