Java Vector removeElementAt() 方法
removeElementAt(int index) 是 Java 中 Vector 类提供的一个方法,用于从向量中移除指定索引位置的元素。此方法会改变向量的大小,所有位于被移除元素之后的元素都会向前移动一位。
语法说明
public void removeElementAt(int index)
参数说明
| 参数名 | 类型 | 描述 | 
|---|---|---|
| index | int | 要移除元素的索引位置,必须满足 0 ≤ index < size() | 
返回值
此方法没有返回值(void 类型)。
异常处理
当调用此方法时,可能会抛出以下异常:
ArrayIndexOutOfBoundsException:如果指定的索引超出范围(index < 0 || index >= size())
方法特点
- 同步性:与大多数 
Vector方法一样,removeElementAt()是线程安全的 - 元素移动:移除元素后,后续所有元素会向前移动一位
 - 大小变化:向量的 
size()会减 1 - 容量不变:向量的 
capacity()不会因此方法调用而改变 
使用示例
基本用法示例
实例
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
// 创建一个 Vector 并添加元素
Vector<String> fruits = new Vector<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Mango");
        
System.out.println("原始 Vector: " + fruits);
        
// 移除索引为 1 的元素(Banana)
fruits.removeElementAt(1);
        
System.out.println("移除后的 Vector: " + fruits);
}
}
public class VectorExample {
public static void main(String[] args) {
// 创建一个 Vector 并添加元素
Vector<String> fruits = new Vector<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Mango");
System.out.println("原始 Vector: " + fruits);
// 移除索引为 1 的元素(Banana)
fruits.removeElementAt(1);
System.out.println("移除后的 Vector: " + fruits);
}
}
输出结果:
原始 Vector: [Apple, Banana, Orange, Mango] 移除后的 Vector: [Apple, Orange, Mango]
异常处理示例
实例
import java.util.Vector;
public class VectorExceptionExample {
public static void main(String[] args) {
Vector<Integer> numbers = new Vector<>();
numbers.add(10);
numbers.add(20);
        
try {
// 尝试移除不存在的索引
numbers.removeElementAt(3);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("错误: " + e.getMessage());
}
}
}
public class VectorExceptionExample {
public static void main(String[] args) {
Vector<Integer> numbers = new Vector<>();
numbers.add(10);
numbers.add(20);
try {
// 尝试移除不存在的索引
numbers.removeElementAt(3);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("错误: " + e.getMessage());
}
}
}
输出结果:
错误: 3 >= 2
性能考虑
- 时间复杂度:平均情况下为 O(n),因为需要移动被移除元素之后的所有元素
 - 空间复杂度:O(1),不需要额外的存储空间
 - 最佳实践:
- 如果需要频繁移除元素,考虑使用 
LinkedList - 如果知道要移除的元素但不清楚其索引,可以使用 
removeElement(Object obj)方法 
 - 如果需要频繁移除元素,考虑使用 
 
与其他方法的比较
| 方法名 | 描述 | 是否改变大小 | 异常 | 
|---|---|---|---|
removeElementAt(int index) | 
移除指定索引处的元素 | 是 | ArrayIndexOutOfBoundsException | 
removeElement(Object obj) | 
移除第一个匹配的元素 | 是 | 无 | 
remove(int index) | 
移除并返回指定索引处的元素 | 是 | ArrayIndexOutOfBoundsException | 
removeAllElements() | 
移除所有元素 | 是 | 无 | 
实际应用场景
- 动态数据管理:当需要根据条件动态移除集合中的特定元素时
 - 队列处理:实现简单的队列功能(虽然 
Vector不是最佳选择) - 数据过滤:移除不符合条件的元素
 
实例
// 实际应用示例:移除所有空字符串
Vector<String> data = new Vector<>();
// ... 添加数据 ...
for (int i = data.size() - 1; i >= 0; i--) {
if (data.get(i).isEmpty()) {
data.removeElementAt(i);
}
}
Vector<String> data = new Vector<>();
// ... 添加数据 ...
for (int i = data.size() - 1; i >= 0; i--) {
if (data.get(i).isEmpty()) {
data.removeElementAt(i);
}
}
注意事项
- 在迭代过程中修改 
Vector可能会导致ConcurrentModificationException - 对于大型 
Vector,频繁调用此方法可能影响性能 - 在多线程环境中使用时,仍需注意复合操作的线程安全性
 
通过理解并正确使用 removeElementAt() 方法,您可以有效地管理 Vector 集合中的元素。
 
 Java Vector
       
点我分享笔记