集合--Map接口

Map 接口

 

     存储双值(键值对)方式为:key->value key值不能重复

     定义:

           public interface Map<K,V>

     方法:

        put​(K key, V value)         存放数据,如果有旧值,则替换返回旧值,反之返回null

        putAll​(Map<? extends K,​? extends V> m)         将指定集合存入

        get​(Object key)                 通过键值获得数据

        keySet()                            返回键值集合

        remoce(Object key)         返回结果同put

        remove​(Object key, Object value)

        clear()                               删除所有映射

        size()                                 返回映射数量

        containsKey​(Object key)                 判断某个键是否在集合中

        containsValue​(Object value)            判断某个值是否在集合中

        replace​(K key, V value)                   根据键替换值

        values()                                          将所有值变成Collection集合

  哈希表:

           存储方式:对象数组+链表

           首先用HashCode值与数组的长度进行取余,确定对象存在哪个位置

           默认数组长度(哈希桶)为16

           散列因子为0.75(当达到百分之75,进行扩容,扩容两倍)

           如果两个对象余数一样,则启用链表,存在此下标的第二个位置,当某一个数组的某个链表(哈希桶)长度大于8,则会变成红黑树,当哈希桶长度减少到6时,会转换回链表

  HashMap子类:

       基于哈希表存储,不保证存储顺序

       put方法流程:

 

     

        方法:都也差不多

       区别:

            HashMap:线程不安全,

            Hashtable:线程安全

            ConcurrentHashMap:采用分段锁机制,保证线程安全,效率又比较高

            TreeMap:不保证存储顺序,但是会自动进行排序

            LinkedHashMap:为了更好的使用HashMap又能保证存储顺序

      散列:

           重建内部结构,进行散列时,先创建一个两倍大小的哈希表再将之前的数据存入

          当键值存储自定义对象时一定要避免修改,因为方法是通过哈希值进行查找数据,修改,属性会改变原有的哈希值。

 

JDK 9 新特性:

   创建固定长度的集合

   三个接口的三个静态方法:

        list: of()方法

       Set: of()方法

       Map: of()方法

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王某人@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值