纯手写HashMap集合

1. ArrayList=数组+扩容技术(底层实现技术)

2.LinkedList=集合链表(底层实现技术)

3.HashMap jdk1.7数组+链表,jdk1.8数组+红黑树

思想本质是相同的HashMap 在jdk1.8比jdk1.7性能提高了15%左右,抽象思维能力,有一个想象的思维空间。

HashMap的扩容技术就是负载因子0.75,这个根据算法是有关系的,Hashcode冲突的情况下(碰撞的原理)

4.HashCode相同,但是它的值对象不一定相同。

5.如果equals相同,那么它的hashCode是一定相同。

6.HashMap中存放值的时候,如果key是一样的,那么它会进行覆盖操作。

7.ArrayList自带扩容技术。


数组和链表的数据结构:

数据结构:数组,链表,红黑树,二叉树

数组具有连续性,查询效率高,ArrayList底层是由数组实现的,删除元素的原理是什么呢?使用移动元素原理+覆盖,假设删除下标为2的元素的值改为C,指定下标添加元素原理,就是将后面的数组的值统一往后推一位留空位置来。


基于ArrayList实现HashMap集合(这种方式性能是非常低的,查询和添加都是非常慢的):

Entry的作用是什么?key和value就可以看做是一个对象的2个属性。

List<Entry<key,value>>存贮容量,list的add方法会自己扩容的。

基于LinkedList实现HashMap集合(LInkedList使用的底层原理是链表,分为双向链表和单项链表,它使用的单项链表。AQS):

单向节点特征:上一个节点保存下一个节点



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值