问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

hashmap 中 hash 函数怎么是是实现的?还有哪些 hash 的实现方式

发布网友 发布时间:2022-04-06 01:50

我来回答

1个回答

热心网友 时间:2022-04-06 03:19

HashMap是对数据结构中哈希表(Hash
Table)的实现,Hash表又叫散列表。Hash表是根据关键码Key来访问其对应的值Value的数据结构,它通过一个映射函数把关键码映射到表中一个位置来访问该位置的值,从而加快查找的速度。这个映射函数叫做Hash函数,存放记录的数组叫做Hash表。
在Java中,HashMap的内部实现结合了链表和数组的优势,链接节点的数据结构是Entry<k,v>,每个Entry对象的内部又含有指向下一个Entry类型对象的引用,如以下代码所示:
static
class
Entry<K,V>
implements
Map.Entry<K,V>
{
final
K
key;
V
value;
Entry<K,V>
next;
//Entry类型内部有一个自己类型的引用,指向下一个Entry
final
int
hash;
...
}
在HashMap的构造函数中可以看到,Entry表被申明为了数组,如以下代码所示:
public
HashMap()
{
this.loadFactor
=
DEFAULT_LOAD_FACTOR;
threshold
=
(int)(DEFAULT_INITIAL_CAPACITY
*
DEFAULT_LOAD_FACTOR);
table
=
new
Entry[DEFAULT_INITIAL_CAPACITY];
init();
}
在以上构造函数中,默认的DEFAULT_INITIAL_CAPACITY值为16,DEFAULT_LOAD_FACTOR的值为0.75。
当put一个元素到HashMap中去时,其内部实现如下:
public
V
put(K
key,
V
value)
{
if
(key
==
null)
return
putForNullKey(value);
int
hash
=
hash(key.hashCode());
int
i
=
indexFor(hash,
table.length);
...
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在公交车上实施扒窃,会受到怎样的处罚? 交通违法行为识别 公交车扒窃会如何处罚? 郑州鱼缸清洗找哪家公司做得比较好? 郑州有没有专业维修鱼缸,清洗鱼缸的? ...的鱼缸,放在办公室养些鱼水草之类的。郑州哪里有卖这样的鱼缸。_百... 我们公司想要定做个观赏鱼缸,不知道郑州哪家公司最专业? 谁知道郑州生态鱼缸定做哪家做的效果最好? 联想电脑启用无线功能的功能键? 笔记本电脑怎么连接网笔记本电脑怎样连接无线网 HashMap的内部实现机制,Hash是怎样实现的,什么时候ReHash hashmap底层是怎么实现的 如何实现线程安全的HashMap 用java,怎么把php数组转换成HashMap或者集合 hashmap有哪些关键技术,是怎么实现的 HashMap内部是如何实现的? in_array 和in 有什么区别呢?in_array 是php的函数吗,in是在mysql中的吗,我不太清楚,哪位高人指点一下 在thinkphp中的&lt;if&gt;condition条件中可以用IN 么? php数组函数in_array() 查找数组值是否存在拜托各位了 3Q php用in_arra数组查询的问题 2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题 php in_array的问题 php file函数和in_array函数问题 php 常用的数组函数都有哪些? 作用是什么?有什么特点? 怎么使用? CKFinder(php版)上传图片报错,总是显示500的错误,请问该怎么解决这个问题呢? PHP文件上传虚拟主机根目录提示500错误信息 .HTACCESS文件上传后出现 500Internal Server Error 访问PHP文件出错出现HTTP 500 - 内部服务器错误 php 网上500错误,本地没问题 500 错误提示什么意思? 如何设计线程安全的 HashMap 如何实现一个hashmap c++ PHP的算法可以实现大数据分析吗 php的数组java如何实现? java中实现一个简单HashMap(就是自己写一个简单的,不要太复杂); php怎么打开socket扩展? 如何在linux上添加PHP的socket扩展 php怎么创建开启socket服务 PHP如何开启socket win 7phpstudy 怎样打开socket支持 PHP SOCKET 技术研究 php是如何加载扩展的? 如何用PHP实现Socket服务器 什么是socket?PHP如何实现socket通信 php怎么打开socket扩展 php和js区别是什么 PHP与JS之间的区别? php与js哪个更难?两者有何不同? PHP框架和JS框架是同一个概念的东西吗? js中的函数和php中的函数一样吗?