一、Vector是什么?
Vector类实现了一个可增长对象数组。像一个数组,它包含可以使用整数索引进行访问的组件。
“Vector 可实现自动增长的对象数组。 java.util.vector提供了向量类(vector)以实现类似动态数组的功能。创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。对于预先不知或者不愿预先定义数组大小,并且需要频繁地进行查找,插入,删除工作的情况。可以考虑使用向量类。”
原文链接:https://blog.csdn.net/weixin_43407007/article/details/87901795
- Vector继承了AbstractList,实现了List,它是一个队列,因此实现了相应的添加、删除、修改、遍历等功能。
- Vector实现了RandomAccess接口,因此可以随机访问。
- Vector实现了Cloneable,重载了clone()方法,因此可以进行克隆。
- Vector实现了Serializable接口,因此可以进行序列化。
- Vector的 操作是线程安全的。
原文链接:https://blog.csdn.net/qq924862077/article/details/48039567
二、Vector怎么用?
函数 | 解释 | 大白话理解 |
boolean add(E e) | 将指定的元素,添加这个矢量的末端 | 加到末尾 |
void add(int index, E element) | 在该向量的指定位置上插入指定的元素 | 加入指定的位置 |
boolean contains(Object o) | 如果这个向量包含指定的元素则返回 true | 有它返回true |
E elementAt(int index) | 返回指定索引处的组件。 | 返回该下标指向的元素 |
E get(int index) | 返回此向量中指定位置的元素。 | 查看某位置的元素 |
int indexOf(Object o) | 返回该向量中指定元素的第一个出现的索引,没有就返回-1 | 查看元素第一次出现的位置 |
int indexOf(Object o, int index) | 从 index往后找,返回这个向量中第一个出现的指定元素的索引 | 查看 |
void insertElementAt(E obj, int index) | 将指定的对象插入在指定的位置。 | 插入到指定位置 |
boolean isEmpty() | 测试这个向量是否没有组件。 | 判空 |
remove(int index) | 移除此向量中指定位置的元素。 | 删除 |
size() | 返回此向量中的组件的数目。 | 大小 |
sort(Comparator<? super E> c) | 分类列表使用提供的 Comparator比较元素。 | 排序 |
三、Vector需要注意的地方
Vector的线程安全是相对的,需要加入synchronized
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。
线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。