HashMap的实现:
1存储方式的不足:
数组:插入删除困难
链表:查询困难 新增删除操作只需要操作当前节点,时间复杂度1;查找操作,遍历整个表,时间复杂度为n
注:
数组:给定下表查找,时间复杂度1;给定值查找,时间复杂度为n;插入删除操作,设计元素的移动,时间复杂度为n
链表:除了第一个和最后一个元素,每一个元素都有一个前驱和后继,
组成:
单链表(当前节点,下一个节点,最后一个节点指向null)
循环单链表(最后一个节点的指针指向头结点)
双向链表(一个前驱,当前节点,一个后继)
循环双向链表(头结点的前驱设置为尾节点,而尾节点的后继设置为头结点)
二叉树:插入、删除平均复杂度为n
哈希表:不考虑冲突的情况下,一次定位就可以实现增删改
哈希表的主干就是数组,查找通过hash函数计算出实际的存储地址,然后将需要的值和对应存储地址的值进行比对,相等就从数组中取出就可以;不相等就和链表的下一个值比对,直到取出相等的值为止
插入操作通过hash函数找到对应的地址,如果已经存在数值,则在链表中的下一个位置
HashMap详解
最新推荐文章于 2021-06-04 20:08:48 发布
HashMap是Java中的一种高效的数据存储结构,它结合了数组和链表的特点,使用哈希函数解决冲突。当发生哈希冲突时,HashMap采用链地址法来处理。HashMap的存储结构包括一个entry数组,每个entry是一个key-value键值对。插入和查找操作主要依赖于key的哈希值,通过哈希函数计算出存储地址。负载因子决定了何时扩容,以平衡空间利用率和查找效率。
摘要由CSDN通过智能技术生成