码迷,mamicode.com
首页 > 其他好文 > 详细

Collection集合中各子集合的差别

时间:2018-01-06 23:25:28      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:添加   元素   set集合   快速   行存储   list集合   失败   返回   一个   

一.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

Collection集合中各子集合的差别

标签:添加   元素   set集合   快速   行存储   list集合   失败   返回   一个   

原文地址:https://www.cnblogs.com/fangr-blue/p/8215436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!