美团面试:JDK 1.8 HashMap如何处理hash冲突问题?我完全不懂啊!

2026-04-28 13:350阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2200个文字,预计阅读时间需要9分钟。

美团面试:JDK 1.8 HashMap如何处理hash冲突问题?我完全不懂啊!

1+什么是hash冲突?我们知道HashMap底层是由数组+链表/红黑树构成的。当我们通过put(key, value)向HashMap中添加元素时,需要通过散列函数确定元素应放置在数组中的哪个位置。当不同元素产生相同散列值时,就会发生hash冲突。

1 什么是hash冲突

我们知道HashMap底层是由数组+链表/红黑树构成的,当我们通过put(key, value)向hashmap中添加元素时,需要通过散列函数确定元素究竟应该放置在数组中的哪个位置,当不同的元素被放置在了数据的同一个位置时,后放入的元素会以链表的形式,插在前一个元素的尾部,这个时候我们称发生了hash冲突。

2 如何解决hash冲突

事实上,想让hash冲突完全不发生,是不太可能的,我们能做的只是尽可能的降低hash冲突发生的概率:下面介绍在HashMap中是如何应对hash冲突的?

当我们向hashmap中put元素(key, value)时,最终会执行putVal()方法,而在putVal()方法中,又执行了hash(key)这个操作,并将执行结果作为参数传递给了putVal方法。那么我们先来看hash(key)方法干了什么。

阅读全文
标签:hashmap应对

本文共计2200个文字,预计阅读时间需要9分钟。

美团面试:JDK 1.8 HashMap如何处理hash冲突问题?我完全不懂啊!

1+什么是hash冲突?我们知道HashMap底层是由数组+链表/红黑树构成的。当我们通过put(key, value)向HashMap中添加元素时,需要通过散列函数确定元素应放置在数组中的哪个位置。当不同元素产生相同散列值时,就会发生hash冲突。

1 什么是hash冲突

我们知道HashMap底层是由数组+链表/红黑树构成的,当我们通过put(key, value)向hashmap中添加元素时,需要通过散列函数确定元素究竟应该放置在数组中的哪个位置,当不同的元素被放置在了数据的同一个位置时,后放入的元素会以链表的形式,插在前一个元素的尾部,这个时候我们称发生了hash冲突。

2 如何解决hash冲突

事实上,想让hash冲突完全不发生,是不太可能的,我们能做的只是尽可能的降低hash冲突发生的概率:下面介绍在HashMap中是如何应对hash冲突的?

当我们向hashmap中put元素(key, value)时,最终会执行putVal()方法,而在putVal()方法中,又执行了hash(key)这个操作,并将执行结果作为参数传递给了putVal方法。那么我们先来看hash(key)方法干了什么。

阅读全文
标签:hashmap应对