您的位置:首页 > 编程语言 > Java开发

Java 的Vector, ArrayList, LinkedList 区别简述

2015-04-03 14:06 561 查看
三个对象的应用场景

用于参照插入/删除操作多线程处理(同期)
Vector×
ArrayList××
LinkedList××

Vector Java1.0 时代

ArrayList LinkedList Java2.0时代

先说一下由来:

Vector 是最早的List类型处理对象,默认对应多线程处理,多线程同时访问的时候,可以确保数据的整合性。

但是正应为这样,往往只有在单线程上处理的工作,因为做了很多针对多线程的工作使得性能低下,

针对这一问题,2.0时代推出了 ArrayList 和LinkedList,天生单线程,但需要装逼时(多线程对应)可通过包装实现。(真是高逼格啊,Vector估计后悔出来太早。。。 。。。)

下面是ArrayList 和LinkedList的封装过程,封装后就可以多线程对应,确保数据整合了

List syncList = Collections.synchronizedList(new ArrayList(...));


至于用于参照,还是用于插入,这个从字面应该就能理解了

Vector 和ArrayList在内存上是有Index索引的,可以实现快速访问,但问题是一个萝卜一个坑固然是好,可要是非的在两个萝卜中间插一个,那这个活就麻烦了。说白了,从要变的位置开始各种Copy,性能自然好不了。不过你要是想按位置找萝卜(参照),那当然一找一个准了

LinkedList 在保存上,是用链式结构的,就像小朋友手拉手玩游戏,你要想插进去,就先找好位置,再去和你要插入位置两边的小朋友说一说(当然有可能人家不愿意,那另说),然后两人分开手,你再和他们牵上,这不就搞定了。同理,要走(删除)也简单
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: