HashMap底层实现原理(站在巨人的肩膀上)

1.前言

一言以蔽之,底层是数组加单向链表,链表的数组,在了解hashMap以前,先了解常用的数组和链表底层原理

1.1 ArrayList :

底层是数组,数组属于顺序存储,内存空间连续根据下标随机访问数组元素的效率高,向数组尾部添加元素的效率高;但是,删除数组中的数据以及向数组中间添加数据效率低,因为需要移动数组元素。顺序存储可以想象成吃饭排队,每个人领的号都是按顺序来的,服务员只要喊号就里立即可以找到对应的人,新来的人都自动加到队尾,如果有人想插队,那么从他插队的位置后面所有的人都要挪动位置;查询速度快。

1.2 LinkedList:

底层是双向链表,内存空间不连续, 每个元素都有一个前指针和后指针,linledList在获取任何一个数据的时候,都要把前面的数据或后面的数据都遍历一遍;插入和删除某个元素的时候,直接移动指针就行;插入、删除速度快。

2.HashMap:

HashMap底层使用数组加(链表或红黑树)的结构完美的解决了数组和链表的问题,使得查询和插入,删除的效率都很高。

2.1  HashMap的put方法

HashMap里面实现一个静态内部类Entry,其重要的属性有 key , value, next,HashMap的基础就是一个线性数组。hashmap在存数据的时候是基于hashing的原

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值