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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vipzh 中级黑马   /  2012-12-3 10:10  /  1313 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ArrayList和Vector为什么大家都把它们放在一起,它们有什么联系或者区别吗?

4 个回复

倒序浏览
ArrayList:底层的数据结构使用的是数组结构。查询速度快;增删慢。线程不同步。
Vector(和ArrayList功能一样,被ArrayList替代了):底层也是数组数据结构。线程同步(效率相对降低)。
一般不要求线程同步的话用ArrayList。
回复 使用道具 举报
|--Vector:jdk1.0就存在了。底层是数组结构的。可变长度数组,
                                                原理:一旦原数组长度不够,会创建新数组,将原数组的元素复制到新数组中,并将新元素添加到新数组中。
                                                Vector是同步的。
                        |--ArrayList:底层是数组结构,也是支持长度可变数组的。是不同步的。替代了Vector.因为效率高。 查询效率很高。 但是增删的效率很低。
回复 使用道具 举报
ArrayList和Vector是List类的实现。支持List接口的全部功能,方法。又扩展了自己的东西。使用很相似,ArrayList是线程不安全的。需要手动同步集合。Vector是线程安全的。如果元素的数目超出了它的初始值大小时,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。
回复 使用道具 举报
Vector和ArrayList 在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。
  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
  当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马