HashMap详解

HashMap是Java中的一种高效的数据存储结构,它结合了数组和链表的特点,使用哈希函数解决冲突。当发生哈希冲突时,HashMap采用链地址法来处理。HashMap的存储结构包括一个entry数组,每个entry是一个key-value键值对。插入和查找操作主要依赖于key的哈希值,通过哈希函数计算出存储地址。负载因子决定了何时扩容,以平衡空间利用率和查找效率。
摘要由CSDN通过智能技术生成

HashMap的实现:
1存储方式的不足:
    数组:插入删除困难        
    链表:查询困难 新增删除操作只需要操作当前节点,时间复杂度1;查找操作,遍历整个表,时间复杂度为n 
    注:
        数组:给定下表查找,时间复杂度1;给定值查找,时间复杂度为n;插入删除操作,设计元素的移动,时间复杂度为n
        链表:除了第一个和最后一个元素,每一个元素都有一个前驱和后继,
            组成:
                单链表(当前节点,下一个节点,最后一个节点指向null)
                循环单链表(最后一个节点的指针指向头结点)
                双向链表(一个前驱,当前节点,一个后继)
                循环双向链表(头结点的前驱设置为尾节点,而尾节点的后继设置为头结点)
        二叉树:插入、删除平均复杂度为n
        哈希表:不考虑冲突的情况下,一次定位就可以实现增删改
                哈希表的主干就是数组,查找通过hash函数计算出实际的存储地址,然后将需要的值和对应存储地址的值进行比对,相等就从数组中取出就可以;不相等就和链表的下一个值比对,直到取出相等的值为止
                插入操作通过hash函数找到对应的地址,如果已经存在数值,则在链表中的下一个位置
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值