Java Vector setSize() 方法
setSize()
是 Java 中 Vector
类提供的一个重要方法,用于设置向量的新大小。这个方法可以动态地调整 Vector
的容量,使其能够满足程序运行时的需求。
方法语法:
public void setSize(int newSize)
方法参数
参数说明
newSize
:这是方法唯一的参数,表示你想要设置的Vector
的新大小- 类型:
int
(整数) - 作用:指定
Vector
调整后的大小
参数特性
- 如果
newSize
大于当前大小,Vector
会自动填充null
值到新增的位置 - 如果
newSize
小于当前大小,Vector
会截断多余的元素 - 如果
newSize
等于当前大小,Vector
保持不变
方法行为
扩容情况
当新大小大于当前大小时:
实例
Vector<String> vector = new Vector<>(Arrays.asList("A", "B", "C"));
vector.setSize(5);
// 现在 vector 包含 ["A", "B", "C", null, null]
vector.setSize(5);
// 现在 vector 包含 ["A", "B", "C", null, null]
缩容情况
当新大小小于当前大小时:
实例
Vector<String> vector = new Vector<>(Arrays.asList("A", "B", "C", "D"));
vector.setSize(2);
// 现在 vector 包含 ["A", "B"]
vector.setSize(2);
// 现在 vector 包含 ["A", "B"]
相等情况
当新大小等于当前大小时:
实例
Vector<String> vector = new Vector<>(Arrays.asList("A", "B", "C"));
vector.setSize(3);
// vector 保持不变,仍为 ["A", "B", "C"]
vector.setSize(3);
// vector 保持不变,仍为 ["A", "B", "C"]
使用示例
基础示例
实例
import java.util.Vector;
public class VectorSetSizeExample {
public static void main(String[] args) {
// 创建一个初始 Vector
Vector<Integer> numbers = new Vector<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
System.out.println("原始 Vector: " + numbers);
// 扩大 Vector
numbers.setSize(5);
System.out.println("扩大后的 Vector: " + numbers);
// 缩小 Vector
numbers.setSize(2);
System.out.println("缩小后的 Vector: " + numbers);
}
}
public class VectorSetSizeExample {
public static void main(String[] args) {
// 创建一个初始 Vector
Vector<Integer> numbers = new Vector<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
System.out.println("原始 Vector: " + numbers);
// 扩大 Vector
numbers.setSize(5);
System.out.println("扩大后的 Vector: " + numbers);
// 缩小 Vector
numbers.setSize(2);
System.out.println("缩小后的 Vector: " + numbers);
}
}
输出结果:
原始 Vector: [10, 20, 30] 扩大后的 Vector: [10, 20, 30, null, null] 缩小后的 Vector: [10, 20]
实际应用场景
setSize()
方法在以下场景中特别有用:
- 预分配空间:当你知道需要存储一定数量的元素时,可以预先设置大小
- 清理多余空间:当不再需要某些元素时,可以缩小
Vector
以节省内存 - 重置容器:快速清空
Vector
并设置新的大小
实例
// 预分配空间示例
Vector<String> names = new Vector<>();
names.setSize(100); // 预分配100个位置
// 清理多余空间示例
Vector<Double> prices = new Vector<>();
// ... 添加许多元素后 ...
prices.setSize(10); // 只保留前10个元素
// 重置容器示例
Vector<Object> tempStorage = new Vector<>();
// ... 使用后 ...
tempStorage.setSize(0); // 清空所有元素
Vector<String> names = new Vector<>();
names.setSize(100); // 预分配100个位置
// 清理多余空间示例
Vector<Double> prices = new Vector<>();
// ... 添加许多元素后 ...
prices.setSize(10); // 只保留前10个元素
// 重置容器示例
Vector<Object> tempStorage = new Vector<>();
// ... 使用后 ...
tempStorage.setSize(0); // 清空所有元素
注意事项
性能考虑
- 频繁调用
setSize()
可能导致性能下降,特别是在大量数据情况下 - 如果需要频繁调整大小,考虑使用
ensureCapacity()
方法预先分配足够空间
线程安全
Vector
是线程安全的,setSize()
方法也是同步的- 在多线程环境中使用是安全的,但可能影响性能
替代方案
在 Java 集合框架中,ArrayList
是一个更现代的替代品,但它没有直接的 setSize()
方法。如果需要类似功能,可以考虑:
实例
// 使用 ArrayList 实现类似功能
ArrayList<String> list = new ArrayList<>();
// 扩容
while (list.size() < newSize) {
list.add(null);
}
// 缩容
while (list.size() > newSize) {
list.remove(list.size() - 1);
}
ArrayList<String> list = new ArrayList<>();
// 扩容
while (list.size() < newSize) {
list.add(null);
}
// 缩容
while (list.size() > newSize) {
list.remove(list.size() - 1);
}
总结
Vector
的 setSize()
方法提供了一种直接的方式来调整向量的大小,无论是扩大还是缩小。虽然 Vector
在现代 Java 编程中不如 ArrayList
常用,但在某些特定场景(如需要线程安全或遗留代码维护)中仍然有其价值。理解这个方法的行为和特性,可以帮助你更有效地使用 Vector
集合。
点我分享笔记