ArrayList、LinkedList、Vector区别
2016-04-11 00:18
309 查看
List是元素的有序列表。
Set集合中的元素是无序且唯一的。
从图中可以看出,这三者都实现了List 接口.所有使用方式也很相似,主要区别在于因为实现方式的不同,所以对不同的操作具有不同的效率。
1、ArrayList 是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会动态地增长.内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组.
2、LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList.
当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据和运算量很小,那么对比将失去意义.
3、Vector 和ArrayList类似,但属于强同步类。如果你的程序本身是线程安全的(thread-safe,没有在多个线程之间共享同一个集合/对象),那么使用ArrayList是更好的选择。
Vector和ArrayList在更多元素添加进来时会请求更大的空间。Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%.
而 LinkedList 还实现了 Queue 接口,该接口比List提供了更多的方法,包括 offer(),peek(),poll()等.
注意: 默认情况下ArrayList的初始容量非常小,所以如果可以预估数据量的话,分配一个较大的初始值属于最佳实践,这样可以减少调整大小的开销。
Set集合中的元素是无序且唯一的。
从图中可以看出,这三者都实现了List 接口.所有使用方式也很相似,主要区别在于因为实现方式的不同,所以对不同的操作具有不同的效率。
1、ArrayList 是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会动态地增长.内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组.
2、LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList.
当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据和运算量很小,那么对比将失去意义.
3、Vector 和ArrayList类似,但属于强同步类。如果你的程序本身是线程安全的(thread-safe,没有在多个线程之间共享同一个集合/对象),那么使用ArrayList是更好的选择。
Vector和ArrayList在更多元素添加进来时会请求更大的空间。Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%.
而 LinkedList 还实现了 Queue 接口,该接口比List提供了更多的方法,包括 offer(),peek(),poll()等.
注意: 默认情况下ArrayList的初始容量非常小,所以如果可以预估数据量的话,分配一个较大的初始值属于最佳实践,这样可以减少调整大小的开销。
相关文章推荐
- 近期的一些进展ww
- git配置ssh非默认端口
- iOS:且说委托代理
- mdev的使用以及mdev.conf的规则配置--busybox
- 【Unity】4.5 树木创建器
- 基于bootstrap 框架
- CSS现尖角对话框或带尖角的导航
- div的position的相对绝对定位
- krpano 教程 - autorotate自动旋转标签中文说明
- 挂接(mount)命令的使用方法
- MINI2440启动配置文件/etc/init.d/rcS文件分析
- python顶级执行代码
- Swift中用CollectionView做广告栏滑动效果
- zabbix监控数据库表空间大小
- ViewPager+Fragment组成滑动且带有光标
- mount -t proc none /proc
- 记和师傅见面
- 2016-开始
- OpenCV实践之路——用dlib库进行人脸检测与人脸标记(Python)
- Zabbix监控报警统计信息报表功能