我是靠谱客的博主 甜蜜花卷,最近开发中收集的这篇文章主要介绍简述HashMap的特点简述HashMap的特点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简述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的特点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部