彻底来理解下hashmap吧

Posted THISISPAN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了彻底来理解下hashmap吧相关的知识,希望对你有一定的参考价值。

1.什么叫hashmap?

答:首先是一种map集合,其次呢,它是一种利用hash表来存储的数据结构。所以叫hashmap.

2.hashmap的特点是什么?

答:hashmap的特点是key值不能重复,否则根据key,可以读取到多个对应的value了啊。

3.那么怎么保证map的key不能重复呢?

答:很简单,利用hashcode值是每个对象的一种状态这个属性来区分每个一个对象就行了嘛。

hashcode值是每个对象的一种状态值。

利用hash算法来计算得出的一种码值,hash算法要传入参数,这个传入的不同参数,决定了hashcode值得最终结果啊。

比如,string,Integer这种封装类,已经重写了hashcode()这个方法,指定了利用string/integer具体的内容来进行hashcode算法传参。

所以string值一样,那么这几个string对象的hashcode值夜一样。

这就可以将string作为map的key啊,保证了key不重复。因为hashmap,底层实现原理是判断传入key的hashcode值来防止重复对象的。

 

4.而普通Object类,默认的计算hacode值得方法hashcode()默认将对象的内存地址传参,进行hashcode值计算的。每个对象的内存地址当然都不一样啊,所以hasshcode也都不一样。即使内容相同的两个对象,由于内存地址不一样,而默认的hashcode()方法是计算内存地址传参的,也造成 了,依然可以放入hashmap中。

 

以上是关于彻底来理解下hashmap吧的主要内容,如果未能解决你的问题,请参考以下文章

彻底理解HashMap的元素插入原理

彻底理解HashMap及LinkedHashMap

3分钟理解HashMap原理

如果你这么去理解HashMap就会发现它真的很简单

hashMap 源码解读理解实现原理和hash冲突

看完彻底了解 HashMap 源码