【java】ArrayList、Vector、LinkedList的区别
2015-03-20 21:48
585 查看
ArrayList、Vector、LinkedList同属于List接口,都存在于java.util包中,都是可伸缩数组,可以动态改变长度。
★ArrayList和Vector都是基于存储元素Object[] array来实现的,它们会在内存中开辟一段连续的空间来存储,因为数据存储是连续的,所以它们支持用下标的方式来访问数据,而且索引数据的速度会比较快,也正因为存储是连续的,在其中插入新的元素时需要移动数据,所以在插入数据时执行速度会比较慢。
在未定义容量大小时,ArrayList和Vector都有一个初始化容量的大小,当里面存储的数据超过这个初始化容量时,它们会动态的扩充存储空间,而为了提高程序的运行效率,每次扩充并不只是单纯增加一个存储单元,ArrayList默认扩充为原来的1.5倍(不能自定义设置每次扩充空间的大小),Vector会默认扩充为原来的2倍(可以自定义设置扩充空间的大小)。
ArrayList和Vector最大的区别就是synchronization同步的使用,ArrayList中没有方法是同步的,而Vector中绝大多数方法都是直接或间接同步的,所以Vector是线程安全的而ArrayList不是线程安全的,而也正是因为Vector的线程安全机制,使得其性能不如ArrayList。
类似于数据结构中顺序表的顺序存储
★LinkedList采用双向列表,因为其数据存储不是顺序存储的,因此访问数据时需要从头开始遍历,所用当有随机访问的需求时,使用LinkedList效率会比较低,但是它的优点是在进行数据插入时,不需要移动数据,LinkedList是非线程安全的容器。
类似于数据结构中顺序表的链式存储
★选择原则:
(1)当对数据的操作主要是索引或者只在集合末端进行数据的增删时,使用ArrayList和Vector效率会比较高。
(2)当对数据的操作主要是在指定位置进行增删时,使用LinkedList效率会比较高。
(3)当需要多个线程同时访问容器时,使用Vector比较安全
★ArrayList和Vector都是基于存储元素Object[] array来实现的,它们会在内存中开辟一段连续的空间来存储,因为数据存储是连续的,所以它们支持用下标的方式来访问数据,而且索引数据的速度会比较快,也正因为存储是连续的,在其中插入新的元素时需要移动数据,所以在插入数据时执行速度会比较慢。
在未定义容量大小时,ArrayList和Vector都有一个初始化容量的大小,当里面存储的数据超过这个初始化容量时,它们会动态的扩充存储空间,而为了提高程序的运行效率,每次扩充并不只是单纯增加一个存储单元,ArrayList默认扩充为原来的1.5倍(不能自定义设置每次扩充空间的大小),Vector会默认扩充为原来的2倍(可以自定义设置扩充空间的大小)。
ArrayList和Vector最大的区别就是synchronization同步的使用,ArrayList中没有方法是同步的,而Vector中绝大多数方法都是直接或间接同步的,所以Vector是线程安全的而ArrayList不是线程安全的,而也正是因为Vector的线程安全机制,使得其性能不如ArrayList。
类似于数据结构中顺序表的顺序存储
★LinkedList采用双向列表,因为其数据存储不是顺序存储的,因此访问数据时需要从头开始遍历,所用当有随机访问的需求时,使用LinkedList效率会比较低,但是它的优点是在进行数据插入时,不需要移动数据,LinkedList是非线程安全的容器。
类似于数据结构中顺序表的链式存储
★选择原则:
(1)当对数据的操作主要是索引或者只在集合末端进行数据的增删时,使用ArrayList和Vector效率会比较高。
(2)当对数据的操作主要是在指定位置进行增删时,使用LinkedList效率会比较高。
(3)当需要多个线程同时访问容器时,使用Vector比较安全
相关文章推荐
- Java中ArrayList、Vector、 LinkedList的区别
- Java深究之Vector、ArrayList、LinkedList的区别
- Java中Vector和ArrayList,LinkedList的区别
- Java——ArrayList,Vector,LinkedList的区别
- 浅谈 java中ArrayList、Vector、LinkedList的区别联系
- Java容器类List、ArrayList、Vector及map、HashTable、HashMap的使用与区别
- Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法
- Java中ArrayList和Vector的区别
- Java性能(4) Vector, ArrayList, LinkedList
- [Java基础系列]Vector与ArrayList区别
- Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法
- java.util中ArrayList、LinkedList以及Vector它们三者的区别与联系
- java 中 arrayList 与 linkedList的使用区别
- Java容器类List、ArrayList、Vector的区别及Map、HashTable、HashMap的区别
- Java知识点Vector和ArrayList,Hashtable和HashMap,ArrayList和LinkedList的区别
- java 中 arrayList 与 linkedList的使用区别
- Java 容器中Vector、ArrayList和LinkedList 的区别
- 在Java中Vector和ArrayList的区别??
- 两个常见问题: HashMap和Hashtable的区别 , ArrayList,Vector, LinkedList的存储性能和特性
- Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法