集合之Map(key-value,键值对形式,键唯一,值可重复)

一、Map常见的子类有:

1、HashMap:
          底层数据结构是哈希表,线程不安全,允许null键和null值

2、Hashtable:
          线程安全的,不允许null键和null值,效率低,给整个方法添加synchronized,太笨重

3、LinkedHashMap:
          底层数据结构是链表和哈希表,由链表保证有序(存储和取出的顺序一致),哈希表保证唯一,线程不安全

4、TreeMap:
          底层数据结构是红黑树(一种自平衡的二叉树),可以按照某种规则进行排序,自然排序和选择器排序,线程不安全

5、ConcurrentHashMap:
        ● 线程安全的,不允许null键和null值

        ● 对与多线程的操作,介于HashMap与Hashtable之间。

        ● 内部采用"锁分段"机制代替Hashtable的独占锁。进而提高性能。

       【查看源码:Hashtable是给整个方法上面添加synchronized,而ConcurrentHashMap是给可能出现线程安全问题的代码用同步代码块的方式加锁】

        ● 获取操作(包括 get)通常不会受阻塞

默认初始容量是16
加载因子是0.75,即当 元素个数 超过 容量长度的0.75倍 (即16*0.75=12)时,进行扩容

你可能感兴趣的:(集合之Map(key-value,键值对形式,键唯一,值可重复))