Vector 学习笔记

Vector 是一种可增长的数组对象,类似于 ArrayList,它们都继承自 AbstractList 并实现了 List 接口。主要区别在于扩容策略:ArrayList 根据旧容量的50%扩容,而 Vector 按照 capacityIncrement 增长;此外,Vector 的所有操作方法都是同步的,适合多线程环境,但性能稍逊于 ArrayList。另外,Vector 没有 size 属性,使用 elementCount 记录元素数量,并提供 setSize 方法进行大小调整。
摘要由CSDN通过智能技术生成

Vector 介绍

Vector实现了一种可增长的数组对象。它可以像数组一样,使用index访问元素。 Vector的大小可以根据需要增加或缩小,以适应Vector创建后添加和删除项目的需要。Vector 通过维护 capacity 和 capacityIncrement 来优化存储管理。capacity 的值大于等于Vector的size. Vector 创建后,Vector的存储量将以块( capacityIncrement那么多)的形式增加。

Vector 和 ArrayList的相同点

看代码:

public class Vector<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
   
//省略
}
public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
   
//省略
}

看到没有,他们继承了同一个父类ArrayList,实现了同样的接口 List, RandomAccess, Cloneable, java.io.Serializable。
那奇怪了,岂不是多余吗?不是的。往下看:

Vector 和 ArrayList的不同点

第一个不同点,就是他们扩容的方式。ArrayList扩容比较大气,根据当前的容量来。也就是:newCapacity = oldCapacity + (oldCapacity >> 1);

ArrayList的扩容方式:

    private void grow(int minCapacity) {
   
        // overflow-conscious code
        int oldCapacity = elementData.length;
        int newCapacity = oldCapacity + (oldCapacity >> 1);
        if (newCapacity - minCapacity < 0)
            newCapacity = minCapacity;
        if (newCapacity - MAX_ARRAY_SIZE > 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值