📅  最后修改于: 2023-12-03 15:01:35.600000             🧑  作者: Mango
Java.util.Vector类是一个动态数组,可以存储任意类型的对象。Vector可以自动地增长和缩小,而不需要手动指定大小,因此被广泛应用于Java开发中。
import java.util.Vector;
public class Example {
public static void main(String[] args) {
// 创建一个Vector对象
Vector<String> v = new Vector<>();
}
}
// 在Vector的末尾添加一个元素
v.add("one");
// 在指定位置插入一个元素
v.add(0, "zero");
// 返回指定位置的元素
String val = v.get(0);
// 删除指定位置的元素
v.remove(0);
// 删除指定元素
v.remove("one");
// 修改指定位置的元素
v.set(0, "new zero");
// 判断是否包含指定元素
boolean contains = v.contains("one");
// 获取Vector大小
int size = v.size();
for (String val : v) {
// do something
}
默认情况下,Vector类中的所有方法都是同步的。这意味着多个线程不能同时访问Vector的同一部分。如果需要在多线程环境下使用Vector,同步是必要的。可以使用synchronized
关键字来实现:
synchronized (v) {
// 在此处访问Vector
}
虽然Vector的所有方法默认都是同步的,但在单线程环境下可以通过以下方式来关闭同步:
Vector<String> v = new Vector<String>() {
@Override
public synchronized boolean add(String e) {
return super.add(e);
}
@Override
public synchronized String get(int index) {
return super.get(index);
}
@Override
public synchronized String remove(int index) {
return super.remove(index);
}
// 省略其他方法
};
这将使用synchronized
关键字覆盖Vector中的每个方法,从而消除同步开销。需要注意的是,这种做法只适用于单线程环境。