ArrayList和linkList,hashMap和hashtable区别

本文探讨了ArrayList和LinkedList在增加、删除和修改操作上的性能差异,以及HashMap的底层实现,包括Entry数组、负载因子和put方法。强调在使用HashMap时,key对象需重写hashcode和equals方法以确保正确覆盖旧值。
摘要由CSDN通过智能技术生成

一,ArrayList与linkList区别

     增加:ArrayList的性能要比LinkedList的性能高  数据越大差距越明显   
     插入:与删除相同
    删除:删除靠后面的数据时ArrayList的性能要比LinkedList的性能高,但是删除靠前的数据时LinkedList不变,ArrayList性能变   差,数据越靠前ArrayList性能越差
     修改:ArrayList比LinkedList快

二,hashMap的底层原理:

      1. HashMap:   存储时,如果key相同,后面的会把前面的替换 并返回被替换的值,如果没有替换则返回null
Hash表本身也叫Entry数组,Entry是一个单项链表也是Hash桶
加载因子: 是一个float类型的参数,扩容界限等于加载因子乘与当前容量,加载因子确定什么时候扩容。加载因子越大空间利用率越高性能越低,反之!

     2. hashMap: put方法

           hashMap一般使用string作为key值,因为string已经重写了hashcode 和equals方法,所以,当key值相等时,新的值会重新覆盖旧的值

    hashMap如果使用对象作为key值,在对象类中必须重写hashcode和equals方法,才能达到当key值相等时,新的值会重新覆盖旧的值,如果不重写,两个值都会产生

    3.hash涉及知识:

         hash算法:不同输入尽可能有不同的输出也成散列算法,好的算法发生hash碰撞会减少
         hash碰撞:不同的输入有相同的输出   发生碰撞越小效率越高


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值