首页 > 试题广场 >

hashMap内部具体如何实现的?

[问答题]
请你解释一下hashMap具体如何实现的?
hashmap是数组+链表实现,数组是主体部分,而数组中的每一个元素可以就是一个链表的头节点。链表主要是为了用来解决hash冲突。
发表于 2019-05-05 13:28:57 回复(0)
更多回答
hashmap 是以数组为基础。首先将关键字通过哈希函数,获得存储位置,即数组的下标。当两个关键字,计算出的数组下标相同时,需要使用链表。即数组中每一个元素都可以看作是链表。
发表于 2019-02-13 21:09:42 回复(0)
HashMap是使用hash算法,然后基于数组+链表+红黑树来实现的
发表于 2019-05-03 21:19:43 回复(0)
hashmap是数组+链表实现,数组是主体部分,而数组中的每一个元素可以就是一个链表的头节点。链表主要是为了用来解决hash冲突。
发表于 2019-03-08 01:38:22 回复(0)
hashmap,基于数组和列表,在j dk1.7中是基于数组和链表的实现,在jdl1.8中引入了红黑数,由于主要储存结构是数组,所以说。,在往里面放元素的时候,需要计算出存放位置,也就是下标。这个计算方式是通过计算,传入元素hashcode值进行右移再和数组容量-1进行按位与运算的结果。由于不同元素的hashcode值可能一样,索引就会造成计算出的下标相同,也就是hash冲突,女韩科然出现就是就算出的结果,链表和和黑梳的引入就是为了解决,而是冲突这个问题。,嗯,当出现了hash冲突。也就是计算的下标位置有元素时。在j dk1点钟1.7中将其按头杀法,插入数组中对应位置的链表中。在j dk1.8的时候是采用尾插法。因为在采用头插法,并发环境下会产生一种循环队列的问题。jdk1.8引入红黑树的原因是。为了牺牲一部分的空间去换取查询的效率。因为红黑树的查询效率比链表要高,当列表长度过长,查询效率会变得相当慢,所以,当链表的长度达到8。,而且数组的长度小于64的时候,就会将列表转化为红黑树。
发表于 2020-04-22 19:05:48 回复(1)
hashMap以键值对的方式存储数据,数据存储是基于数组加链表实现
发表于 2019-12-13 20:49:52 回复(0)
hashmap是键值对的方式存储数据的,hashcode和equals方法用来向集合中添加或检索元素,
发表于 2019-04-29 18:11:08 回复(0)