Java常用容器对比

ArrayList与Vector

ArrayList和Vector内部都是由数组实现的,数组实现的优点就是支持元素的随机访问(O(1)),但是在对元素进行插入和删除操作时,需要向后或向前移动数组,这样导致插入和删除的效率将会降低(O(n));

ArrayList的默认容量是10,扩容为原来的1.5倍;

Vector的默认容量也是10,可以在创建是指定容量。扩容为原来的2倍;

ArrayList与Vector最大的区别在于Vector是线程安全的,这也导致Vextor的效率要远低于ArrayList;

 

ArrayList与LinkedList

LinkedList内部采用的是链表实现,所以相比于ArrayList,LinkedList在插入和删除操作时速度很快,但是在随机访问时需要遍历整个链表(时间复杂度是O(n));

 

HashMap与HashTable

jdk1.8 HashMap详解

                           HashMap                  HashTable

线程安全                 否         是

初始容量                 16                                11

性能                         好                               不好

扩容                       2倍                               2倍+1

空值                      允许(null,null)              不允许null

 

HashSet

HashSet内部实现是HashMap,只不过value为null。

 

posted @ 2018-09-11 17:50  多读书多看报  阅读(224)  评论(0编辑  收藏  举报