Collection集合中各子集合的差别

Posted fangr-blue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Collection集合中各子集合的差别的主要内容,如果未能解决你的问题,请参考以下文章

集合框架(List和Set)

在 Firestore 中删除包含所有子集合和嵌套子集合的文档

读取带有子集合的文档的 Firestore 计费

在地图上显示 firebase 子集合的引脚 - Flutter

WPF TreeView HierarchicalDataTemplate - 绑定到具有多个子集合的对象

具有EF6子集合的父/子总是为空