黑马程序员技术交流社区

标题: ArrayList和Vector问题 [打印本页]

作者: 黄成超    时间: 2013-1-29 18:08
标题: ArrayList和Vector问题
ArrayList和Vector有什么区别,为什么说ArrayList可以替代Vector
作者: 郭金龙    时间: 2013-1-29 18:29
ArrayList和Vector,Vector是1.0版本就有的,线程同步安全,低效,ArrayList是1.4以后的,一步不安全,高效。他们的用法大致相同,现在一般都是用ArrayList比较好!
作者: 黄金龙    时间: 2013-1-29 18:45
vertor 有个枚举 在IO中 SequenceInputStream类 要使用到这东西..
就是多一个枚举 其他就一无是处了....
同步的话..自己可以加在ArrayList里面其他基本相同..ArrayList更为高效.
作者: 刘军亭    时间: 2013-1-29 18:55
本帖最后由 刘军亭 于 2013-1-29 18:56 编辑

ArrayList:底层使用的数组结构,特点:查询速度很快,但是增删稍慢.线程不同步.50%延长
Vector:底层使用的是数组数据结构,线程同步.被ArrayList替代了.100%延长

因为他们两个的功能相同,ArrayList是后来版本出来替代Vector的因为Vector是同步的效率低。
作者: 宋朋山    时间: 2013-1-29 21:47
板凳  最近刚好在学习集合类   记得以前开发一直在用ArrayList,没细想过。  学习下
作者: 高毅    时间: 2013-1-29 21:52
确实arraylist要常用些,不过,最近在公司的老项目中看到了vector的身影~
作者: 孙辉辉    时间: 2013-1-29 22:31
。。。一个1.0,一个1.4出现。。然后功能基本相同,可以想象如果不好的话sun公司不会吃饱了撑的出个这个东西,然后我们都知道新版本一般都是要比旧版本号的。。。
作者: ︶ㄣ布丁    时间: 2013-1-29 23:39
Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。
  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
  当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间


ArrayList和Vector在从指定位置取得元素,从容器的末尾增加和删除元素都非常的有效,所有的这些操作都能在一个常数级的时间(O(1))内完成。但是从一个其他的位置增加和删除一个元素就显得颇为费时,差不多需要的时间为O(n-i),这里的n代表元素个数,i代表要增加和删除的元素所在的位置。这些操作需花费更多的时间,因为你需要挨个移动i和更高位置的元素。那么,以上这些到底说明了什么呢?
  
  这意味着,如果你取得一个元素,或者从数组末尾增加或删除一个元素的话,随便你使用Vector和ArrayList。如果你想要对数组内容做其他操作的话,那么就为自己好另一个容器吧。比喻说,LinkedList可以在常数级时间(O(1))内为任意一个位置的元素增加和删除。但是,取得一个元素,会稍微慢一点,时间要用O(i) ,这个i是元素的位置。通过ArrayList也是很简单的,因为你可以简单使用一个索引,而不是构造一个iterator 。LinkedList也为每个插入的元素建立一个内部对象。所以,你也必须知道,同时产生了垃圾对象。
作者: 何家旺    时间: 2013-1-30 00:26
ArrayList是新版本。   作为一个常规用途的对象容器使用,用于替换原先的Vector。允许我们快速访问元素,但在从列表中部插入和删除元素时,速度却嫌稍慢。一般只应该用ListIterator对一个ArrayList进行向前和向后遍历,不要用它删除和插入元素;与LinkedList相比,它的效率要低许多
vector类所有的方法都是被同步的,虽然两个线程并发访问vector对象是安全的,但如果只用一个线程访问失量,由于源代码调用了被同步的方法,其运行时间要长一些。arrayList为非同步的。就是说单线程时要用arrayList,多线程时考虑用vector。
vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高。




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