在java的容器集合中,hashmap的使用频率可以说是相当高的。不过对于hashmap的存(put())以及取(get())的原理可能很多人还不大清楚,今天,我就给大家介绍下它是如何存如何取的。
假如有面试官问你,hashmap是如何存数据的,你会怎么回答?
显然前者和后者的回答,后者的回答还是相对好点的。不过,这可能仅仅只是故事的开始。
这时面试官可能会问你,如果两个key对象的hashcode相同怎么办?
这个时候,hashmap的put原理讲解就告一段落了。下面说说获取get(key)原理
其实get原理和put原理是差不多的,一个逆向的过程。
和其他容器一样,当我们没有指定大小直接new一个hashmap的时候,系统会自动给我们初始化一个数值。如果我们在存数据的过程中,大小超过了负载因子定义的容量怎么办?
大家都知道,当Map在扩容新的数组并且移动数据的时候,都是比较消耗时间和内存的,如果我们事先能预测到我们到存的数据的大致大小的话,我们就可以在创建hashmap的时候指定大小,这样,可以大小减少扩容带来的消耗。