Java 的Vector, ArrayList, LinkedList 区别简述

来源:互联网 发布:记事本软件 编辑:程序博客网 时间:2024/06/06 22:06

三个对象的应用场景

用于参照插入/删除操作多线程处理(同期)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 在保存上,是用链式结构的,就像小朋友手拉手玩游戏,你要想插进去,就先找好位置,再去和你要插入位置两边的小朋友说一说(当然有可能人家不愿意,那另说),然后两人分开手,你再和他们牵上,这不就搞定了。同理,要走(删除)也简单


0 0
原创粉丝点击