(注意:本文基于JDK1.8)
前言
Vector与ArrayList不同,Vector是线程安全的线性表容器,Vector底层同样使用数组持有元素,虽然在实际项目中几乎不会再使用Vector,但是它的实现方式仍值得我们学习,通过学习Vector的缺点,可以让我们避免犯同样的错误……所以求职时,Vector也是高频面试题……
1、Vector的增删改查方法均由synchronized修饰,这意味着在同一时刻只能有一个线程访问这些方法,没有获取到当前Vector对象锁的其他线程会处于阻塞状态,这保证了作为共享变量的底层数组对象的线程安全
2、Vector早在JDK1.0就发布给用户使用,而ArrayList则是JDK1.2才发布给用户的
3、Vector使用的底层数组的默认容量为10
4、Vector的底层数组容量使用的扩容量为1倍(备注:扩容数组的增量可以自定义数量)
Vector类结构
public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{ }
1、继承AbstractList
2、实现List接口,说明Vector具备线性表的功能
3、实现RandomAccess接口,说明Vector支持随机访问元素,即支持使用下标访问元素
4、实现Cloneable接口,说明支持使用clone()方法创建对象
5、实现java.io.Serializable接口,说明对象支持序列化
创建对象的4种方式
添加元素的方法
删除元素的方法
修改元素的方法
查找元素的方法
元素遍历的方式
1、for循环 通过下标
2、foreach方式
3、Iterator方式
4、Enumeration方式
接下来的文章就从这些方面逐个熟悉这些方法的实现,Let us go!!!!