Collection集合中各子集合的差别

一.HashMap和HashTable的差别

 1.HashMap能允许一个null key和多个null value值;HashTable不允许为null;

 2.HashMap不同步非安全;HashTable是同步的,线程安全。

 3.两者加载因子都是0.75;但是扩容增量存在差别;HashMap为1倍,HashTable为2倍+1;

 

二.ArrayList、Vector、LinkedList差别 

  1.ArrayList与Vector的差别

    底层都是数组结构;

    Vector扩容是2倍;ArrayList是1.5倍;(Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%)

    Vector是线程安全的,ArrayList非线程安全;

 

   1.同步性(Synchronization):
      Vector中的public方法多数添加了synchronized关键字、以确保方法同步、也即是Vector线程安全、ArrayList线程不安全。
    2.扩容(Resize):
      ArrayList以1.5倍的方式在扩容、Vector 当扩容容量增量大于0时、新数组长度为原数组长度+扩容容量增量、否则新数组长度为原数组长度的2倍。
    3.性能(Performance):
      由于第一点的原因、在性能方便通常情况下ArrayList的性能更好、而Vector存在synchronized 的锁等待情况、需要等待释放锁这个过程、所以性能相对较差。
    4.快速失败(fail-fast):
      Vector 的 elements 方法返回的 Enumeration 不是 快速失败(fail-fast)的。而ArrayList是快速失败(fail-fast)

 

  2.ArrayList与LinkedList差别

   ArrayList按数组结构进行存储;含有索引,查询快;

   LinkedList按链表结构进行存储;增删快;

 

    ArrayList:

                   底层数据结构是数组,查询快,增删慢线程不安全,效率高

            Vector:

                   底层数据结构是数组,查询快,增删慢线程安全,效率低

            LinkedList:

                    底层数据结构是链表,查询慢,增删快线程不安全,效率高

 

三.Collections和Collection差别

  Collection是集合的父类,上级父类为Iterator;包含List集合和Set集合的子类;

  Collections是Collection的工具类;提供了常用的集合静态方法;

  

四、LinkedHashSet 

  底层数据结构由哈希表和链表组成;哈希表保证元素的唯一性;链表保证元素有素;

 

五、更多参考

 http://blog.csdn.net/lzhifang006/article/details/44600347

http://skyuck.iteye.com/blog/526358

posted @ 2018-01-06 21:40  弱弱的问丶  阅读(315)  评论(0编辑  收藏  举报