Vector

Vector是一个线程安全的动态数组,适合快速访问和修改,但效率较低。它的扩容默认按2倍增长,初始容量为10。相比之下,ArrayList非线程安全,通常在不需要线程同步时使用,其扩容默认按1.5倍增长,初始容量可能为0。两者都允许元素为null,但Vector提供了设置扩展容量的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vector概述

  1. Vector底层也是一个对象数组,protected Object[] elementData
  2. Vector是线程同步的,即线程安全,因为Vector 类的操作方法带有 synchronized,但效率不高。
  3. 在开发中,需要线程同步安全时,考虑使用Vector;如果不需要线程安全,推荐使用ArrayList代替Vector。
  4. Vector是动态数组实现的List,跟ArrayList一样,其容量能自动增长。
  5. Vector适用于快速访问和修改,不适用随机插入和删除。
  6. Vector初始容量大小为10,扩容由初始容量和capacityIncrement共同决定。
  7. Vector元素允许为null。

扩容机制

如果是无参,默认容量10,容量满后,就按2倍扩容

如果有参指定大小,则每次直接按2倍扩容

Vector与ArrayList比较

Vector与ArrayList的最大区别就是Vector是线程安全的,而ArrayList不是线程安全的。另外区别还有:

  1.     ArrayList不可以设置扩展的容量,默认1.5倍
  2.     Vector可以设置扩展的容量,如果没有设置,默认2倍
  3.     ArrayList的无参构造方法中初始容量为0(初次调用add()会更新为10)
  4.     Vector的无参构造方法中初始容量为10
  5.     Vector线程安全
  6.     ArrayList线程不安全

存储结构

// 存储元素
protected Object[] elementData;

// 实际元素个数
protected int elementCount;

// 扩容时增加量,大于0增加capacityIncrement,否则翻倍
protected int capacityIncrement;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值