设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
Vector还是ArrayList这是个问题
返回列表
发新帖
Vector还是ArrayList这是个问题
[复制链接]
11
|
0
|
2006-8-24 13:27:00
|
显示全部楼层
|
阅读模式
API
在由Ken Arnold等编著的《Java 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也会为每个插入的元素创建对象,所有你要明白它也会带来额外的开销。
最后,在《Practical Java》一书中Peter Haggar建议使用一个简单的数组(Array)来代替Vector或ArrayList。尤其是对于执行效率要求高的程序更应如此。因为使用数组(Array)避免了同步、额外的方法调用和不必要的重新分配空间的操作。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
初期肛瘘能自愈吗
2
不育症吃什么水果好
3
如何戒除手淫和治疗阳痿?
4
09年,南昌大学艺术类专科(艺术设计)校区在公青?
5
Never belong to me
6
什么牌子的电脑好!
7
割包茎后多长时间可以洗澡
8
死精经过治疗能让老婆怀孕吗
9
睾丸积液会持续多少天
10
小儿阴茎短小是怎么回事
11
你好做包皮套环多久才可以过性生活?
12
遗尿症是不是遗传
13
间质性膀胱炎可以吃香蕉吗
14
求The Moffatts首张专辑“Chapter I:A New Beginning”的全部歌曲
15
学习工商管理 要学什么课程 想自己看书 根据大学本科的学习教程
16
前列腺增生必须动手术切除吗
17
为什么我就这么喜欢他、
18
三星s8000c可以看电子书吗?
19
4个月减肥减60斤
20
西南科技大学电子信息专业怎么样啊
21
广东2009学业水平测试成绩查询网址
22
谁能帮我看看这电脑值多钱 (二手)如果是新的又要多钱
23
这个人真的好nc那么多人提醒就是不听
24
支付宝支付需要证书?
25
良性前列腺增生手术应该注意什么
26
告诉我你25岁在做什么?
27
如果被一个人甩了怎样报复他?
28
婚姻里一定有爱情吗
29
杰普特长笛
30
为什么电脑无法读出条形码扫描枪
31
火影忍者鸣人什么时候做火影
32
为什么是郁可唯李霄云一起去兰州呢
33
找两首歌的真正歌名 爱问知识人
34
天龙八部钓鱼
35
专升本学生户口放人才中心可以吗?请说明原因。
36
手表表蒙需要镀膜么?
37
芜湖n78水货哪儿有卖的?
38
本票的背书与背背书问题?
39
幼稚园杀手声音本来就那样的吗?
40
报考高考问题!知情者请进
41
友友们,给我介绍点FIR的好听歌曲 谢谢啦
42
2009年老黄历
43
极品飞车几是在街上找车开的
44
朋友们我刚刚玩魔道不知道怎么加点我是修暗光火的 想让你们帮我出出主意
45
MCP78和AMD 770+SB700芯片组哪个好?
46
摩尔庄园成为消防员还能
47
谁知道上海千荣装饰设计工程有限公司怎么样?
48
哪些视频转换器可以把RMVB格式很快转换?
49
南开大学文学院都包括什么专业啊?
50
添上单词完成句子( )the( )today?
51
连衣裙 黑色 露背 高腰 的有图 哪有卖的
52
有谁知道统计报表中的《工业企业统计月报表(二)》《工业企业主要经济指标》中的中间投入合计是哪几样啊
53
乙肝表面抗原 阴性(-) 乙肝表面抗体 阳性(+)
54
ccc检查销售部不合格怎么整改?
55
摩尔庄园神奇密码
56
民办中小学老师与公办中小学老师的待遇区别?
57
8月21日天天向上出场 挥舞旗子时很有气势的歌叫什么?
58
请说出你所在的省份的所有县的名称
59
谁有QQ空间的大图或者FLASH模版啊,不要黑色的,不要情侣的,不要难看的!!好的加分!!
60
梦见掉进大瓷缸里
61
网吧在没光纤之前用的什么网线
62
国寿鸿富两全保险
63
江苏七位数09130期是什么啊
64
请问"灌水“是什么意思啊?
65
数学题目
66
北京爵士舞培训 房山区
67
qq飞车找车队
68
现在能买到暗黑破坏神3正版吗???
69
手机QQ下载问题
70
拉网线!!急100分
71
西安那里有收购旧笔记本电脑的?
72
桂林年轻人社区求助?
73
关于clannad after story
74
梦幻西游藏宝阁手续费那么贵怎么办?
75
怎样能使口服糖浆味道变淡?
76
我是今年的毕业生直到现在也没有找到工作,
77
日语自考要考哪几门
78
驾驶证照片被淋看不见了
79
怎样知道自己qq被好友屏蔽消息
80
没初中毕业证怎么办???????????????急
81
高一化学题
82
大大们,问个诺基亚手机的问题
83
如果别人在舞团那、向团长发出申请。团长怎么同意?
84
股票 买卖
85
我的淘气王子 插曲是什么
86
延安财经学校怎么样?
87
我曾是一名中越边境的陆军侦察兵,有招募耽误可以联系.
88
为什么经期左下腹部疼痛难忍,就算不是经期只要碰到凉的东西也会有月经 ,咱没有性经历
89
诺基亚n79,怎么查询短信接受/发送总数?
90
求dnf红丸改流星落....
91
冒险岛075无法登陆都21号了 唯独第一大陆登陆不了
92
求一款最新好的笔记本电脑。可玩3D游戏,网速也很快,开机当然要快,内存最少要1G的。
93
湖南农业大学东方科技学院的新生食宿
94
在杭州万向职业技术学院多久可回家一次
95
最动感、伤心、经典的歌!
96
推广SD 敢达新手觉醒卡的朋友来
97
诺基亚622c无法安装主题
98
河北工业大学城市学院建筑学好吗?
99
求北京服装货源
100
16838386是什么号码