A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangqing 黑马帝   /  2011-11-16 13:15  /  2317 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wangqing 于 2011-11-27 13:35 编辑

为什么ArrayList可以代替Vector ?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

6 个回复

倒序浏览
不知道楼主在哪听说的,反正我是不赞成这个观点。这两个集合类最大的区别就是ArrayList不同步,Vector 是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException。所以在多线程编程时,必须明确两者的这个区别。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
ArrayList和Vector都能实现动态数组的功能,Vector类的所有方法都是同步的(synchronized)。你可以使用两个线程安全的访问Vector对象。但是,如果你只用单个线程来访问Vector对象——这是更加常见的情况——那么你的代码将会在同步操作上浪费相当多的时间。而ArrayList类的方法使异步的。因此现在的建议一般是在不需要同步时使用ArrayList而不是Vector。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
不能说替代,不过现在基本都用ArrayList ,效率高,不过是不同步的。可以用collections里的方法来同步ArrayList 集合。 而vector是同步的,所以也有他的应用。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 赞一个!

查看全部评分

回复 使用道具 举报
ArrayList:底层的数据结构使用的数组结构,特点:查询速度很快,增删稍慢,它实现不是同步的,多线程时注意同步。
Vector原理一样,它是线程同步,效率低

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
ArrayList:底层的数据结构使用的数组结构,特点:查询速度很快,增删稍慢,它实现不是同步的,多线程时注意同步。
Vector原理一样,它是线程同步,效率低
回复 使用道具 举报
任俊杰 黑马帝 2011-11-17 09:15:17
7#
当然能替代呀,只不过,但是如果你要要求同步的话,就只有你自己手动编码同步了,这样就比较麻烦了。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马