Vector:这个类的底层实现方式是数组,他会初始申请大小为10的数组空间,如果大小大于10了之后会增加capacityIncrement个(这是Vector的一个字段,如果初值为0,0的话并不是不扩大,而是扩大一倍)。允许存null
ArrayList:这个类的size isEmpty get set iterator listIterator操作都是以固定的时间运行的,这取决于ArrayList的底层实现方式是数组,参考文章http://zhangshixi.iteye.com/blog/674856。因而对于定点查询和修改的操作要快。ArrayList是Vector的非同步版本,因而是线程不安全的,但是合理使用锁效率会高,另外ArrayList满了会申请当前大小一半的额外空间,并且没有像Vector一样提供构造函数来修改这个值。允许存null
LinkedList:底层实现方式是双向循环链表,参考文章http://www.cnblogs.com/ITtangtang/p/3948610.html,所以对于add和remove以及对首个和尾元素的操作要比ArrayList快,因为数组要重新申请大小然后构造,链表只需要把下一跳上一跳地址进行相应修改。也不是同步的实现方式。允许存null
HashSet:底层实现方式是HashMap,参考文章http://alex09.iteye.com/blog/539549。将要存的对象放到Map的Key中,value中则存放一个静态的对象: static final Object PRESENT = new Object()。允许null,不同步
TreeSet:基于TreeMap和NavigableSet实现,使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。add,remove等基本操作log(n)的时间开销。