ArrayList类是Java集合框架出现之后用来取代Vector的.
二者区别:
Vector:所有的方法都使用了synchronized修饰符. 线程安全但是性能较低,适用于多线程环境.
ArrayList:所有的方法都没有使用synchronized修饰符. 线程不安全但是性能较高.
++即使以后再多线程环境下,我们也不使用Vector类.++
ArrayList list = collections.synchronized(new ArrayList(...));
常用方法参照Vector类
阅读源代码发现Vector的源代码和ArrayList的源代码差异有点大(从设计上考虑)
有的时候某个方法需要返回一个ArrayList对象:
但是在该方法中,如果一个都没有查询到,我们不会返回null.我们会返回一个空集对象(没有元素的集合)
public ArrayList getAll(){
//TODO
//return Collections.emptyList();//最好的方法
return new ArrayList();//是很多人最直观,最简单的选用方式
}
在Java7之前,即使使用new ArrayList创建对象,一个元素都不存储,但是在堆空间依然初始化了长度10位的Object数组.没必要.
从Java7开始优化了这个设计,new ArrayList.其实底层创建的使用一个数组.
Object[] elementData = new Object[]{};
在第一次调用add方法的时候,才会重新去初始化数组.