三九宝宝网宝宝百科宝宝知识

资格认证:Vector和ArrayList哪一个更好

12月04日 编辑 39baobao.com

[Linux资格认证:Linux操作系统的运行级别]Linux操作系统自从开始启动至启动完毕需要经历几个不同的阶段,这几个阶段就叫做runlevel,同样,当Linux操作系统关闭时也要经历另外几个不同的runlevel,下面我们就准备详细介绍一...+阅读

下面我们从4个方面进行一一探讨

API

在由Ken Arnold等编著的《Ja Programming Language》(Addison-Wesley, June 2000)一书中有这样的描述,Vector类似于ArrayList.。所有从API的角度来看这两个类非常相似。但他们之间也还是有一些主要的区别的。

同步性

Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用ArrayList是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销。

数据增长

从内部实现机制来讲ArrayList和Vector都是使用数组(Array)来控制集合中的对象。当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因为你可以通过设置集合的初始化大小来避免不必要的资源开销。

使用模式

在ArrayList和Vector中,从一个指定的位置(通过索引)查找数据或是在集合的末尾增加、移除一个元素所花费的时间是一样的,这个时间我们用O(1)表示。但是,如果在集合的其他位置增加或移除元素那么花费的时间会呈线形增长:O(n-i),其中n代表集合中元素的个数,i代表元素增加或移除元素的索引位置。为什么会这样呢?以为在进行上述操作的时候集合中第i和第i个元素之后的所有元素都要执行位移的操作。这一切意味着什么呢?

这意味着,你只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。如果是其他操作,你选择其他的集合操作类。比如,LinkList集合类在增加或移除集合中任何位置的元素所花费的时间都是一样的?O(1),但它在索引一个元素的使用缺比较慢-O(i),其中i是索引的位置.使用ArrayList也很容易,因为你可以简单的使用索引来代替创建iterator对象的操作。LinkList也会为每个插入的元素创建对象,所有你要明白它也会带来额外的开销。

最后,考试,大建议您使用一个简单的数组(Array)来代替Vector或ArrayList。尤其是对于执行效率要求高的程序更应如此。因为使用数组(Array)避免了同步、额外的方法调用和不必要的重新分配空间的操作。

以下为关联文档:

资格认证:JavaEE中各种打包文件和结构Ja EE中各种打包文件和结构下面介绍在Ja EE应用中常见的包的类型、结构、作用:1--EJB-JAR包:后缀为.jar,EJB模块,包含有Session Bean,Message Driver Bean,Entity Bean;管理这...

物流师职业资格认证考试规则第一章 考场规则第一条 考生在考试前15分钟,凭准考证进入指定考场,入座后将准考证放在桌面左上角。第二条 考试开始后15分钟,迟到考生不得进入考场,开考后30分钟内和考试结束...

Linux资格认证:Ubuntu下对CPU进行降频这两天CPU温度超高,为了解决这个问题,先是找了两块以前台式机上的风扇(一个CPU,一个机箱风扇),和一条USB延长线。接好以后运行了一段时间,发现效果很不明显,大概降了有1度吧,还不知...

资格认证:Linux系统Perl精简版netstat写作意图:Linux系统自带的stat在很多时候抓信息会发现耗CPU很高,特别是在做一些监控系统的时候,发现如果使用了stat,监控系统本身会造成系统负载比较高,因此试着用perl写下,time...

微软资格认证:Windows7任务栏详解微软Windows Team的Chaitanya Sareen,20日在开发blog中写了一篇文章,文中详细介绍了微软的下一代操作系统Window 7的任务栏的一些信息.从文章中我们看到了一个有革命意义的...

Linux资格认证:新手必了解DNS服务基本原理我们知道,既可以使用主机名标识一台主机,也可以使用IP地址标识。人们更愿意使用便于记忆的主机名标识符,而路由器则只愿使用长度固定并有层次结构的IP地址。我们可以通过多种...

资格认证:Ubuntu防ARP欺骗arptables现在一直用Ubuntu,很少出现跟人抢IP的事, 也就没有关心过,直到有一天,偶的IP被人用了,从网上找找了资料,发现了arptables这个东东!~思路和LNS的差不多!~~只让偶和网关间是双向通信,...

Linux资格认证:Ubuntu离线安装软件的方法由于公司上网有限制,但是可以通过其他机子上网,所以就查找了下离线安装软件的方法。大概方法是,把apt源设置成本地,但是首先要去下载最新的软件目录包,然后使用apt安装的时候会...

Linux资格认证:通向MySQL神秘王国的图形化之路MySQL GUI Tools是一套图形化桌面应用工具套装,可以用来管理MySQL服务器。该套装工具包含三个工具:MySQL Query Browser、MySQL Administrator和MySQL Migration Assistant(仅...

推荐阅读
图文推荐