1、 Collection分为两种类型的接口:List和Set,两者最明显的差别是list支持放入重复的对象,而set不支持。list接口常用的实现类有:ArrayList、linkedlist、vector、stack;Set接口常用的实现类有HashSet、TreeSet。
2、ArrayList:是基于数组方式实现的,无容量的限制;在执行插入操作时可能要扩容,在删除元素时并不会减小数组的容量,是非线程安全的。,
3、LinkedList是基于双向链表机制,就是集合中的每个元素都知道其前一个元素及其后一个元素的位置,是基于双向链表机制实现,在插入元素时,需创建一个新的entry对象,并切换相应元素的前后元素的引用;在查找元素时,需遍历链表;在删除元素时,要遍历链表,找到要删除的元素,然后从链表中删除即可;是非线程安全的。
4、Vector是基于Synchronized实现线程安全的ArrayList,但是在插入元素时容量扩充的机制和ArrayList不同,可通过传入capatityIncrement来控制容量的扩充,和ArrayList不同点是当数组大小不够时,其扩大数组的方法有所不同,Vector的策ruo是如果capcatityIncrement大于0,则将object数组的大小扩大为现有size加上capcatityIncrement的值,如果capcatityIncrement等于或小于0,则将object数组的大小扩大为现在size的2倍,这种容量的控制策若比arrayList更可控。
5、Stack继承于Vector,在此基础上实现了stack所要求的的后进先出lifo的弹压及压入操作,其提供了push、pop、peek,
stack是基于vector的实现,支持LiFO。
6、Hashset是set接口的实现,不允许元素重复,注意:是基于hashMap实现的,无容量限制;是非线程安全的。
7、TreeSet和hashset主要不同是在于treeset对于排序的支持,treeset基于treemap实现,也是非线程安全的。
8、HashMap采用数组方式存储的key、value构成的entry对象,无容量限制;是基于key hash寻找到entry对象存放到数组的位置,对于hash冲突采用链表的方式来解决;在插入元素的时可能会扩大数组的容量,在扩大时需重新计算hash,并复制对象到新的数组中;是非线程安全的。
9、treemap是一个支持排序的map实现,非线程安全的。