社区
Java SE
帖子详情
请教高手,Vector 和 ArriList 得区别 是什么啊? 最好举例说明!
xiaoxongbeijing
2008-04-15 12:40:35
各位通道得朋友,我看了许多关于我同样问题得论坛,可是都没有实际得例子来说明,他们到底有什么区别,什么时候运用呢? 请大家帮我下,我发现面试当中很多地方都是这个问题!
...全文
275
24
打赏
收藏
请教高手,Vector 和 ArriList 得区别 是什么啊? 最好举例说明!
各位通道得朋友,我看了许多关于我同样问题得论坛,可是都没有实际得例子来说明,他们到底有什么区别,什么时候运用呢? 请大家帮我下,我发现面试当中很多地方都是这个问题!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhou_ye
2008-04-22
打赏
举报
回复
学习了。
tganthem
2008-04-22
打赏
举报
回复
两者都是使用数组的方式存储数据,唯一的区别在于:
Vector使用了Synchronized方法,所以在效率上不如ArrayList~~~
qusic
2008-04-22
打赏
举报
回复
ArrayList比Vector效率高~嘿嘿
taolei
2008-04-21
打赏
举报
回复
已经有很多年没用Vector和Hashtable了,事实上我根本不用这两个类。
包括Collections.SynchronizedCollection()也从来不用。
Vector就能保证线程安全吗?
看看这段代码
public Object getFirst(Vector v)
{
if (v.size() > 0)
return v.remove(0);
else
return null;
}
public List getList(Hashtable map,Object key)
{
if(map.containsKey(key))
return (List)map.get(key);
ArrayList ar = new ArrayList();
map.put(key,ar);
return ar;
}
问题:上面的代码是线程安全的吗?问题出在哪里?
用Collections.SynchronizedCollection就能保证线程安全吗?
kalman03
2008-04-20
打赏
举报
回复
看帮助文档。。。。。
bootupnow
2008-04-20
打赏
举报
回复
[Quote=引用 14 楼 Dan1980 的回复:]
瞎扯! ArrayList在任何方面都比Vector强!
至于ArrayList为什么不是线程安全的, 这是由Java 1.3以后的新集合类的设计方式决定的, Java 1.3加入的新集合类默认都不是线程安全的. 因为可以用Collections.SynchronizedCollection()方法得到任何集合类的线程安全版本.
在一个不需要兼容java 1.3以前版本的程序中, 请放弃使用Vector, Stack和Hashtable这些遗留类. 它们的问题很多.
[/Quote]
Collections.SynchronizedCollection()
hyzhx
2008-04-20
打赏
举报
回复
[Quote=引用 9 楼 xql80329 的回复:]
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的
比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。
在单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1;
而如果…
[/Quote]
这么说对vector操作是一个原子操作,
而对arraylist操作不是一个原子操作?
KKK2007
2008-04-20
打赏
举报
回复
Vector是线程同步的
ArrayList是线程不同步的
Dan1980
2008-04-20
打赏
举报
回复
瞎扯! ArrayList在任何方面都比Vector强!
至于ArrayList为什么不是线程安全的, 这是由Java 1.3以后的新集合类的设计方式决定的, Java 1.3加入的新集合类默认都不是线程安全的. 因为可以用Collections.SynchronizedCollection()方法得到任何集合类的线程安全版本.
在一个不需要兼容java 1.3以前版本的程序中, 请放弃使用Vector, Stack和Hashtable这些遗留类. 它们的问题很多.
sharelimit
2008-04-19
打赏
举报
回复
建议使用ArrayList
cnjzy0106
2008-04-18
打赏
举报
回复
学习了!
xql80329
2008-04-18
打赏
举报
回复
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的
比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。
在单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1;
而如果是在多线程情况下,比如有两个线程,线程 A 先将元素存放在位置 0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B也向此 ArrayList 添加元素,因为此时 Size 仍然等于 0 (注意哦,我们假设的是添加一个元素是要两个步骤哦,而线程A仅仅完成了步骤1),所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增加 Size 的值。
那好,现在我们来看看 ArrayList 的情况,元素实际上只有一个,存放在位置 0,而 Size 却等于 2。这就是“线程不安全”了。
Insourcia_Java_Net
2008-04-18
打赏
举报
回复
值得学习
惭愧的是我没用到过
jimeshengxian
2008-04-18
打赏
举报
回复
需要线程同步时用Vector,保证线程安全,不考虑线程同步和安全时可以用ArrayList
zhengpeiyong
2008-04-15
打赏
举报
回复
[Quote=引用 7 楼 fufu6530 的回复:]
需要同步的用Vector
反之用ArrayList
[/Quote]
fufu6530
2008-04-15
打赏
举报
回复
需要同步的用Vector
反之用ArrayList
bootupnow
2008-04-15
打赏
举报
回复
学习之
xiaoxongbeijing
2008-04-15
打赏
举报
回复
好得谢谢大家,帮忙了。我懂了! 加个分吧!
karlpan01
2008-04-15
打赏
举报
回复
需要考虑线程安全的时候用Vector
反之用ArrayList
frank3G
2008-04-15
打赏
举报
回复
线程安全的知识
咩....
羊```SORRY 昨天刚看过电影《疯羊》,有点过敏
加载更多回复(2)
Array
List
和
Vector
的
区别
是什么?
2. 初始容量和增长方式:
Vector
的初始容量缺省为10,当容量不足时,容器容量会以原来容量的2倍自动扩展。而 Array
List
的缺省初始容量为10,当容器大小增加到容量大小时,容器容量会自动增加1.5倍。1. 线程安全性:
Vector
是线程安全的,即多线程情况下,
Vector
可以保证容器的同步性。因此,如果在单线程环境下,或者是不考虑线程安全性的场景下,建议使用 Array
List
。而在多线程环境下,或者需要保证容器同步性的场景下,建议使用
Vector
。
Array
List
和
Vector
的
区别
Array
List
和
Vector
的
区别
vector
和deque的
区别
(1)
vector
的底层实现时数组;而deque的底层实现时“中央控制区”和缓冲的结构。 (2)
vector
的内存空间时连续的;而deque的内存空间是一种假的连续,实际上是不连续的。 (3)vecotr的支持数组的随机访问;而deque虽然也是支持使用[]的运算符,但实际上是需要通过中央控制器二次寻址的,效率比
vector
略低。 (4)
vector
在空间不够重新申请新空间策略是先申请一块比...
【华为OD技术面试官百问百答】shared_ptr实现的底层机制?
vector
和deque的
区别
?编译原理,动态链接和静态链接有什么
区别
?
1. shared_ptr 实现的底层机制是什么?如何实现的? 会有那些问题? 2.
vector
和 deque 的
区别
是什么?内部的数据结构实现有什么不同? 3. Lambda 表达式的参数捕获有哪几种情况 4.
vector
尾部添加元素,需要连续的内存空间吗? 5. 编译原理,动态链接和静态链接有什么
区别
?一般什么情况用动态链接,什么情况用静态链接? 6. C++ 程序内存布局是怎么样的?堆和栈有什么
区别
?栈和堆各有什么优缺点?栈空间大小? 7. 2 GB 内存的操作系统中,可以分配 4 GB 的数
Array
List
和 Linked
List
和
Vector
使用上有什么
区别
?实现上有什么
区别
?
Array
List
和
Vector
使用上有什么
区别
?实现上有什么
区别
?
Vector
和Array
List
在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。 1
Vector
的方法都是同步的(Synchronized),是线程安全的(thread-safe),而Array
List
的方法不是,由于线程的同步必然要影响性能,因此,Array
List
的性能比Ve
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章