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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wsc1988126 初级黑马   /  2012-10-22 22:03  /  1941 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题!如题!如题!如题!

评分

参与人数 1黑马币 +9 收起 理由
韩军博 + 9

查看全部评分

7 个回复

倒序浏览
1>同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的  2>数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半。
回复 使用道具 举报
本帖最后由 宫明星 于 2012-10-22 22:08 编辑


List:元素是有序的,元素可以重复。因为该集合体系有索引。

        ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
        LikedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
        Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。(特有的: 枚举)
        还有就是数据增长的区别,楼上已经说了,就不写了。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。
  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
  
回复 使用道具 举报
ArrayList是线程不安全的,当多条线程访问同一个ArrayList集合时,如果有超过一条线程修改了ArrayList集合,那么程序必须手动保证该集合的同步性。
Vector是线程安全的,无须程序保证该集合的同步性。Vector集合比ArrayList集合性能低
Vector是一个一个古老的集合(从JDK1.0就有了)
回复 使用道具 举报
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也为每个插入的元素建立一个内部对象。所以,你也必须知道,同时产生了垃圾对象。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
sun~~ 中级黑马 2012-10-23 00:19:17
7#
Vector和ArrayList区别
Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。
        Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
       ArrayList有一个容量(capacity),它表示在不需要为更大的数组分配内存的情况下所能容纳的元素。当添加元素时,它们被存放在数组中,但当空间用尽时,就必须重新分配一个数组以替代原数组,所以正确地设置初始容量而已提高性能。如果数据的初始大小远小于其最终大小,那么将初始容量设得更大一些可以减少使用更大数组替换原数组的次数。但是将大小设得太大,也会浪费空间。
简单地来说:
ArrayList: 底层数据结构是数组,线程不安全。
                  增删慢,查询快。
Vector:底层数据结构是数组,线程安全。
               增删慢,查询快。但是,线程安全,效率就低。所以查询也慢。

回复 使用道具 举报
聆听 中级黑马 2012-10-28 14:20:26
8#
ArrayList和Vector功能类似。
整体上ArrayList是Vector的“裸奔新版”
Vector从Java 1.0起就存在,ArrayList从Java 1.2起才存在,较新。
所以Vector在JavaME、Card等各种微小版本都可以使用,而ArrayList不能

ArrayList不具备线程同步的安全性,但速度较快,所以叫裸奔。
Vector具备线程安全。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马