再论JAVA中核心数据结构——List
来源:互联网 发布:eclipse for java ee 编辑:程序博客网 时间:2024/06/05 15:02
在前面一篇文章中,我们已经谈过了关于List的相关内容
下面我们再一次讨论下List
我们来主要看看最常用的3种List实现——ArrayList,Vecotr,LinkedList
ArrayList和Vector都是数组实现的,内部几乎采用了相同的算法,唯一区别是ArrayList没有对任何一个方法做线程同步,也就是没有使用synchronized关键字,而Vecotr是采用线程安全的,所以从理论上来说,ArrayList的性能要稍稍好于Vector,但实际中并不是很明显。
LinkedList是采用双向循环链表实现的,查询较慢,插入,删除较快,但是还得看具体位置
1、插入元素在列表尾部
这无疑是ArrayList更快,因为数组插在尾部,不需要做任何的数据组复制操作,也就是数组的元素移动操作;而LinkedList,header元素的前驱正好是最后一个元素,所以直接插入到header之前就可以了。
还有一点,ArrayList是数组实现的,那么在定义时,必然有初始化数组大小,JAVA中ArrayList初始化默认大小是10,超过则自动扩容至原大小1.5倍,一旦扩容就需要进行数组的整体内存复制,比较耗时,所以认为初始化大小很关键;而LinkedList没有容量大小的概念。
2、插入元素在列表任意位置
当然LinkedList更快了,不用多说了
3、删除任意位置的元素
这个就需要具体看该元素所处的位置了
-->头部:LinkedList更快,只需修改指针指向,遍历最少
-->尾部:LinkedList更快,只需修改指针指向,遍历最少,因为是双向循环列表,通过Header可以直接找到尾部
-->中间:ArrayList更快,因为几乎要遍历完整个List才能找到该元素,主要时间都是花在遍历元素上,真正删除还是很快的
ArrayList的扩容操作还是需要大家注意的
总结一句就是:
多查询,用ArrayList,多增删,用LinkedList,具体问题,具体分析
- 再论JAVA中核心数据结构——List
- java核心数据结构(一)——List类族
- java核心数据结构(二)——Map类族
- java核心数据结构(三)——Set类族
- Java中常见数据结构List之ArrayLis
- Java中常见数据结构List之LinkedLis
- 数据结构——list
- 数据结构—链表List
- java数据结构-List
- java数据结构之List
- java中的数据结构--list
- Java 数据结构List
- java数据结构-List
- java数据结构-List
- 数据结构——List Leaves
- 核心java系列——java中继承
- Java中常见数据结构:list与map -底层如何实现
- Java中常见数据结构:list与map -底层如何实现
- VC++6.0编译时总死机,安装vcsp6补丁
- 网格与云计算关键技术
- adb install apkt
- “鬼佬”总经理的管理艺术
- 微软云计算解决方案介绍
- 再论JAVA中核心数据结构——List
- 一个前端工程师眼里的NodeJS
- MySQL的一些问题的解决
- BAT命令大全
- 二叉树两结点的最低共同父结点[数据结构]
- dom4j操作节点(XPath 语法)
- Java判断素数
- 2012.11份~笔记【ppt总结】
- 开源免费天气预报接口API以及全国所有地区代码!!(国家气象局提供)