Java 的Vector, ArrayList, LinkedList 区别简述
2015-04-03 14:06
561 查看
三个对象的应用场景
Vector Java1.0 时代
ArrayList LinkedList Java2.0时代
先说一下由来:
Vector 是最早的List类型处理对象,默认对应多线程处理,多线程同时访问的时候,可以确保数据的整合性。
但是正应为这样,往往只有在单线程上处理的工作,因为做了很多针对多线程的工作使得性能低下,
针对这一问题,2.0时代推出了 ArrayList 和LinkedList,天生单线程,但需要装逼时(多线程对应)可通过包装实现。(真是高逼格啊,Vector估计后悔出来太早。。。 。。。)
下面是ArrayList 和LinkedList的封装过程,封装后就可以多线程对应,确保数据整合了
至于用于参照,还是用于插入,这个从字面应该就能理解了
Vector 和ArrayList在内存上是有Index索引的,可以实现快速访问,但问题是一个萝卜一个坑固然是好,可要是非的在两个萝卜中间插一个,那这个活就麻烦了。说白了,从要变的位置开始各种Copy,性能自然好不了。不过你要是想按位置找萝卜(参照),那当然一找一个准了
LinkedList 在保存上,是用链式结构的,就像小朋友手拉手玩游戏,你要想插进去,就先找好位置,再去和你要插入位置两边的小朋友说一说(当然有可能人家不愿意,那另说),然后两人分开手,你再和他们牵上,这不就搞定了。同理,要走(删除)也简单
用于参照 | 插入/删除操作 | 多线程处理(同期) | |
Vector | ○ | × | ○ |
ArrayList | ○ | × | × |
LinkedList | × | ○ | × |
ArrayList LinkedList Java2.0时代
先说一下由来:
Vector 是最早的List类型处理对象,默认对应多线程处理,多线程同时访问的时候,可以确保数据的整合性。
但是正应为这样,往往只有在单线程上处理的工作,因为做了很多针对多线程的工作使得性能低下,
针对这一问题,2.0时代推出了 ArrayList 和LinkedList,天生单线程,但需要装逼时(多线程对应)可通过包装实现。(真是高逼格啊,Vector估计后悔出来太早。。。 。。。)
下面是ArrayList 和LinkedList的封装过程,封装后就可以多线程对应,确保数据整合了
List syncList = Collections.synchronizedList(new ArrayList(...));
至于用于参照,还是用于插入,这个从字面应该就能理解了
Vector 和ArrayList在内存上是有Index索引的,可以实现快速访问,但问题是一个萝卜一个坑固然是好,可要是非的在两个萝卜中间插一个,那这个活就麻烦了。说白了,从要变的位置开始各种Copy,性能自然好不了。不过你要是想按位置找萝卜(参照),那当然一找一个准了
LinkedList 在保存上,是用链式结构的,就像小朋友手拉手玩游戏,你要想插进去,就先找好位置,再去和你要插入位置两边的小朋友说一说(当然有可能人家不愿意,那另说),然后两人分开手,你再和他们牵上,这不就搞定了。同理,要走(删除)也简单
相关文章推荐
- Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
- java.util中ArrayList、LinkedList以及Vector它们三者的区别与联系!
- Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
- java.util中ArrayList、LinkedList以及Vector它们三者的区别与联系
- Java中的ArrayList、Vector和LinkedList的区别
- java基础之集合List-ArrayList、LinkedList、Vector的区别
- Java中LinkedList、Vector和ArrayList的区别
- JAVA中的vector,arraylist,linkedlist有什么共同点及区别?
- java的List接口的实现类 ArrayList,LinkedList,Vector 的区别
- java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析
- Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
- java.util中ArrayList、LinkedList以及Vector它们三者的区别与联系
- Java知识点Vector和ArrayList,Hashtable和HashMap,ArrayList和LinkedList的区别
- 1.Java的集合类 2.Vector,ArrayList,LinkedList,SynchronizedList 3.HashMap与ConcurrentHashMap的区别
- Java Vector ArrayList LinkedList 区别
- Java容器类List、ArrayList、Vector及map、HashTable、HashMap、TreeMap、LinkedHashap的区别与用法
- Java 容器中Vector、ArrayList和LinkedList 的区别
- Java中Vector、ArrayList和LinkedList的区别
- Java中Vector、LinkedList和ArrayList的区别
- java类集框架(ArrayList,LinkedList,Vector区别)