最简单的集合类关系如下图
1.几点重要的特征
List,Set,Map将持有对象一律视为Object型别。
Collection、List、Set、Map都是接口,不能实例化,继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。
vector容器确切知道它所持有的对象隶属什么型别,vector不进行边界检查。
2.各个集合类的特性
List中的元素是可重复,Set中的元素是不可以重复的
ArrayList与Vector
都是基于数组的,但是长度是可变的,
ArrayList与Vector区别不大,
(1)Vector是同步的,ArrayList是非同步的,所以Vector比ArrayList慢,关于线程同步这点稍后我会有随笔专门梳理,会附上链接的
(2)ArrayList在内存不够时默认是扩展50% + 1个,Vector是默认扩展1倍(http://www.cnblogs.com/wanlipeng/archive/2010/10/21/1857791.html)
(3)Vector提供indexOf(obj, start)接口,ArrayList没有。
LinkedList是基于链表实现的,所以采用add,remove的时候,开销比较小,想遍历LinkedList需要采用iterator来完成
java源码LinkedList分析:http://blog.csdn.net/jzhf2012/article/details/8540543
Set
HashSet是无序的,输出内容顺序与add相反
TreeSet无论输入的顺序,输出的都是升序类型的
Map
HashTable和HashMap