Java集合框架-HashMap、TreeMap-源码分析(第十五天)

map在存储的是k-v键值对映射数据

        实现子类:

                HashMap:数组+链表(1.7)        数组+链表+红黑树(1.8及以上版本)

                LinkedHashMap:链表

                TreeMap:红黑树

        基本api的操作:

                增加:

                        put(k,v)        给集合添加数据

                查找:        

                        isEmpty()        判断集合是否为空

                        size()        判断集合的大小

                        containsKey

                        containsValue

                        get

                删除:

                        clear        清空集合中所有的元素

                        remove:删除指定元素

                遍历:

         map.entrySet():表示的是K-V组合的一组映射关系,key和value成组出现,使用映射作为迭代器,将他们作为一个整体

         hashmap跟hashtable的区别:

                1.hashmap线程不安全,效率高,hashtable线程安全,效率低

                2.hashmap中的key和vlaue都可以为空,hashtable不允许为空

        hashmap初始值为2的N次幂

                1.方便进行&操作,提高效率,&操作要比取模运算效率更高

                2.在扩容之后涉及到元素的迁移过程,迁移的时候只需要判断二进制前一位是0或1即可

源码分析:

        1.默认初始值

        2.加载因子

        3.put操作

                a.设置值,计算hash

                b.扩容操作

                c.数据迁移的过程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值