Java Collections Framework--(二 List集合)

来源:互联网 发布:微信炸群软件下载 编辑:程序博客网 时间:2024/05/14 21:25
 

5.ArrayList VS Vector VS Stack

ArrayList可用Iterator遍历,但Vector可用Iterator或者Enumeration遍历。两者的实现算法相差不多。但差别最重要的一点是线程安全问题Vector类的所有方法都是线程同步的,两个线程并发访问Vector对象将是安全的,但只有一个线程访问Vector对象时,因为源程序仍调用了同步方法,需要额外的监视器检查,运行效率要低些。ArrayList类中的所有方法是非同步的,所以在没有线程安全问题时,最好用ArrayList,程序的效率会高些。在有线程安全问题时,且我们的程序又没有自己处理(自己处理是指对调用ArrayList的代码或方法加上同步代码同步处理)时,只能用VectorStackVector的继承,但主要用到的方法是push and pop and empty,不然也就失去了Stack的意义,Stack也是线程安全的。

6.ArrayList VS LinkedList

ArrayList是用数组实现的,可以随即访问每个元素,不用考虑性能问题。LinkedList是使用节点彼此连接实现的,要访问指定元素,必须遍历节点实现定位。ArrayList的缺点是在中间添加元素时,后面的元素必须后移,而LinkedList则通过节点连接来实现,只须修改节点的前后引用即可。但在中间插入(删除)元素的情况较少见,所以LinkedList比较少用。