黑马程序员技术交流社区

标题: 小疑惑 [打印本页]

作者: vipzh    时间: 2012-12-3 10:10
标题: 小疑惑
ArrayList和Vector为什么大家都把它们放在一起,它们有什么联系或者区别吗?
作者: 冯盼    时间: 2012-12-3 10:14
ArrayList:底层的数据结构使用的是数组结构。查询速度快;增删慢。线程不同步。
Vector(和ArrayList功能一样,被ArrayList替代了):底层也是数组数据结构。线程同步(效率相对降低)。
一般不要求线程同步的话用ArrayList。
作者: 齐银春    时间: 2012-12-3 10:24
|--Vector:jdk1.0就存在了。底层是数组结构的。可变长度数组,
                                                原理:一旦原数组长度不够,会创建新数组,将原数组的元素复制到新数组中,并将新元素添加到新数组中。
                                                Vector是同步的。
                        |--ArrayList:底层是数组结构,也是支持长度可变数组的。是不同步的。替代了Vector.因为效率高。 查询效率很高。 但是增删的效率很低。
作者: 杨立    时间: 2012-12-3 10:36
ArrayList和Vector是List类的实现。支持List接口的全部功能,方法。又扩展了自己的东西。使用很相似,ArrayList是线程不安全的。需要手动同步集合。Vector是线程安全的。如果元素的数目超出了它的初始值大小时,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。
作者: 睡中忘了的睡    时间: 2012-12-3 15:23
Vector和ArrayList 在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。
  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
  当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间




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