Vector和Stack分析

本文对比分析了Vector和ArrayList的主要区别,如线程安全性、扩容策略,并详细介绍了Vector中涉及Element的方法,如elements(), firstElement(), lastElement()等。此外,还探讨了Vector的子类Stack,包括push(), pop(), peek()等方法的实现。" 118877916,7482437,ESP32-CAM发热及MD5错误解决攻略,"['单片机', '嵌入式硬件']
摘要由CSDN通过智能技术生成
  1. Vector与ArrayList

作为底层都是采用动态数组作为实现基础的类,Vector和ArrayList在很多方面都是大同小异的。在阅读之前本文之前可以先阅读ArrayList的源码解析,然后Vector基本就一目了然了。
说下他们的主要区别:
1. Vector里面的方法都是同步的,线程安全的。
2. Vector的扩容大小与ArrayList不同,Vector1.6和1.7中都是上一次大小的2倍。
3. Vector多了许多包含Element的方法 (Vector的子类栈Stack实际采用的是这些方法)
其次Vector比ArrayList还多了一个成员变量 capacityIncrement, 可以通过构造方法指定

// 自定义的扩容增长大小, 可以通过构造方法指定大小
protected int capacityIncrement;
// 在扩容的时候会使用到
// 1.6
int newCapacity = (capacityIncrement > 0) ?
(oldCapacity + capacityIncrement) : (oldCapacity * 2);
// 1.7
int newCapacity = oldCapacity +
((capacityIncrement > 0) ? capacityIncrement : oldCapacity);

然后如果不指定数据数组的大小,那么就和ArrayList一样,Vector的默认大小也是10。其余与ArrayList名称相同的方法,实现上没什么大的区别。

  1. Vector在java1.6和1.7

Vector在1.6和1.7基本没多少大的区别,首先在初始化上也基本相同。没有像ArrayList从1.6升到1.7ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值