ArrayList 和 Vector 比较

JAVA中ArrayList 和 Vector 比较:

    1. API
    从提供API来看,二者几乎一致,vector多了element系列API,如elementAt()、firstElement()等。但实现的功能基本一致,故如果需要选择的时候API的差别不应该一个重要的参考项

    2. 线程同步
    Vector的每个方法都是线程同步的,因此当需要保证线程安全时应该选用Vector。而ArrayList是线程不安全的,故如果不需要保证线程安全时应该采用ArrayList以避免不必要的同步开销,降低效率

    3. 空间增长
    Vector和ArrayList内部都是维持一个数组来实现存储的,都可以提供指定数组默认大小,同时有当空间不足时,内部有容量自动增长的机制,Vector默认为容量翻倍,ArrayList默认为增长原容量的50%,但是Vector可以指定增长的大小(Vector(int initialCapacity, int capacityIncrement))。当你知道你需要存储的空间大小时,在生成Vector或者ArrayList对象时,最好指定大小,这样可以避免容量自动增长时的数组生成和复制开销。如果不知道自己的需求,采用Vector会好一些,因为可以指定增长的容量。

    4. 使用情况
    Vector和ArrayList都是采用数组进行顺序存储的,查询的效率较高,且在尾部添加或者删除元素的时间复杂度都为O(1)。但是如果在中间插入或者删除元素时,时间复杂度为O(n - i),需要额外的数组复制移动开销。因此如果你的情况是需要在尾部添加删除元素,或者主要用于查询,则采用Vector和ArrayList都是不错的选择,否则,应该采用LinkedList,它采用链表实现,中间插入或删除元素复杂度都为O(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值