注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

说出ArrayList,Vector, LinkedList的存储性能和特性  

2010-12-06 19:49:05|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
说出ArrayList,Vector, LinkedList的存储性能和特性?

这是一道常见的Java面试题

 

答案:(来自http://www.rzchina.net/node/2210)

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

 

但是ArryList和LinkedList到底性能怎样?具体也没测过?
不过今天我在org.apache.commons.collections.list http://commons.apache.org/collections/apidocs/index.html

TreeList 中发现了一组比较数据

 
The following relative performance statistics are indicative of this class:

                  get  add  insert  iterate  remove
 TreeList       3    5       1       2       1
 ArrayList      1    1      40       1      40
 LinkedList  5800    1     350       2     325

 

发现ArrayList 依然是我们的最好选择(除过对数据进行插入和删除时)

LinkedList 应该已经可以说再见了(它的get,insert,remove远不如TreeList  ,add和iterate也只是稍好或与TreeList一样 )

TreeList应该是它的最好的替代品

 

希望Java后来的JDK可以引入TreeList

 



  评论这张
 
阅读(295)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017