黑马程序员技术交流社区

标题: 集合问题 [打印本页]

作者: wangqing    时间: 2011-11-16 13:15
标题: 集合问题
本帖最后由 wangqing 于 2011-11-27 13:35 编辑

为什么ArrayList可以代替Vector ?
作者: quanhui    时间: 2011-11-16 13:32
不知道楼主在哪听说的,反正我是不赞成这个观点。这两个集合类最大的区别就是ArrayList不同步,Vector 是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException。所以在多线程编程时,必须明确两者的这个区别。
作者: 李高翔    时间: 2011-11-16 13:41
ArrayList和Vector都能实现动态数组的功能,Vector类的所有方法都是同步的(synchronized)。你可以使用两个线程安全的访问Vector对象。但是,如果你只用单个线程来访问Vector对象——这是更加常见的情况——那么你的代码将会在同步操作上浪费相当多的时间。而ArrayList类的方法使异步的。因此现在的建议一般是在不需要同步时使用ArrayList而不是Vector。
作者: 宋文轩    时间: 2011-11-16 14:17
不能说替代,不过现在基本都用ArrayList ,效率高,不过是不同步的。可以用collections里的方法来同步ArrayList 集合。 而vector是同步的,所以也有他的应用。
作者: 李龙龙    时间: 2011-11-16 16:17
ArrayList:底层的数据结构使用的数组结构,特点:查询速度很快,增删稍慢,它实现不是同步的,多线程时注意同步。
Vector原理一样,它是线程同步,效率低
作者: 李龙龙    时间: 2011-11-16 16:18
ArrayList:底层的数据结构使用的数组结构,特点:查询速度很快,增删稍慢,它实现不是同步的,多线程时注意同步。
Vector原理一样,它是线程同步,效率低
作者: 任俊杰    时间: 2011-11-17 09:15
当然能替代呀,只不过,但是如果你要要求同步的话,就只有你自己手动编码同步了,这样就比较麻烦了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2