1.ArrayList,LinkedList是线性表的两个典型实现:前者是基于数组的线性表,后者是基于链的线性表。数组
2.各类集合性能比较安全
集合名称 | 实现机制 | 随机访问排名 | 迭代操做排名 | 插入操做排名 | 删除操做排名性能
数组 连续内存区保存元素 1 不支持 不支持 不支持线程
ArrayList/ArrayDeque 以数组保存元素 2 2 2 2内存
Vector 以数组保存元素 3 3 3 3io
LinkedList 以链表保存元素 4 1 1 1table
3.HashSet,TreeSet,ArrayList,ArrayDeque,LinkedList,HashMap,TreeMap都是线程不安全的,经过Collectioins.synchronizedXXX()方法能够得到其线程安全版本jdk
实例:List
Collection c = Collections.synchronizedCollection(new ArrayList());
List list = Collections.synchronizedList(new ArrayList());
Set s = Collections.synchronizedSet(new HashSet());
Map m = Collections.synchronizedMap(new HashMap());方法
4.线程安全的集合Vector,Stack,Hashtable 都是在jdk1.1就出现 性能较低 通常不推荐使用
5.Hashtable和HashMap主要的两点区别 (1)Hashtable是线程安全实现,HashMap是线程不安全的实现 (2)Hashtable不容许null做为key和value,试图放入的话会报NullPointerException