HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList相关

1、HashMap

  允许Null键Null值,因其数据结构,存储效率高,无顺序。

  基于hash算法实现,首先对key的hashCode计算,根据hash值获取在数组中的位置

  负载因子默认是0.75,超过负载因子定义的容量后,会创建两倍数据大小,这个过程叫resize或者rehash

  多线程会产生条件竞争

  HashMap和HashSet区别:

    HashMap实现了Map接口 
    HashSet实现了Set接口

    HashMap储存键值对 
    HashSet仅仅存储对象

    HashMap使用put()方法将元素放入map中 
    HashSet使用add()方法将元素放入set中

    HashMap中使用键对象来计算hashcode值 
    HashSet使用成员对象来计算hashcode值

    速度:HashMap > HashSet

 

2、HashMap和Hashtable的区别

  HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。

  Hashtable是线程安全的

 

3、LinkedHashMap

  

LinkedHashMap是否允许空 Key和Value都允许空
LinkedHashMap是否允许重复数据 Key重复会覆盖、Value允许重复
LinkedHashMap是否有序 有序
LinkedHashMap是否线程安全 非线程安全

 

4、ConcurrentHashMap

  线程安全的HashMap

 

5、ArrayList和LinkedList

  ArrayList的add效率高,但超过容量时扩容需要大量复制操作

  LinkedList不存在容量问题,但每次增加都需要新建一个Entry对象,并赋值

 

 

 

 

    

posted @ 2020-03-20 11:35  Covenant  阅读(173)  评论(0编辑  收藏  举报

ヾ(≧O≦)〃点我返回顶部嗷~