概述
简述HashMap的特点
一、HashMap是查询效率最高的数据结构。
二、HashMap的内部是使用数组来存储元素的,元素存放的位置是依据key值的hashcode()方法的返回值经散列算法,生成的下标数字来决定的。所以查询元素时,HashMap会依靠给定的key的hashcode()方法返回值来计算出对应的下标,然后直接通过下标去访问相应的元素,这样就省去了遍历数组的过程。HashMap查询数据时不受元素数量的影响。
三、由于Map的key的唯一性(key的equals()方法比较来决定是否重复),那么在存放多组元素时可能会出现两个key经hashcode()方法返回值再通过散列算法计算后所得下标值一样的情况。那么此时HashMap会根据key的equals()方法比较两个key是否相等,若相等则替换value值,若不相等则会以链表的形式保存这两组键值对(链表的出现会影响查询性能)。
四、在HashMap中链表的出现会影响查询性能,因为可能会存在需要遍历链表的情况,二作为key元素的hashcode()方法与equals()方法直接决定是否会产生链表。
五、当两个key的hashcode()方法返回值相同(在HashMap内部数组下标就相同),若key的equals()比较不同则会出现链表。
六、关于equals()方法和hashcode()方法的重写
对于java提供的类,我们无需关注他们的重写,一定是符合要求的,但是对于我们自定义的类,若要重写这两个方法时,需要遵循以下要求:
1、两个方法要成对重写,即:当我们需要重写一个类的equals()方法时,也要重写hashcode()方法;
2、一致性:当两个对象equals()比较结果为true时,hashcode()方法返回值必须相等,反之亦然。虽然并非要求hashcode()值相等时equals()比较必须为true,但若不是这样,这两个对象作为key存入HashMap时就会产生链表。(hashcode()返回值直接决定了这个对象在Map数组中存放的位置)。
3、稳定性:当一个对象参数equals()比较的属性没有发生过改变的前提下,每次调用hashcode()方法返回的值应当不变。
最后
以上就是甜蜜花卷为你收集整理的简述HashMap的特点简述HashMap的特点的全部内容,希望文章能够帮你解决简述HashMap的特点简述HashMap的特点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复