Java Vector capacity() 方法
capacity()
方法是 Java 中 Vector
类提供的一个内置方法,用于返回当前向量的容量(capacity)。容量指的是向量在不重新分配内部存储空间的情况下能够存储的元素数量。
语法格式
public int capacity()
方法返回值
该方法返回一个 int
类型的值,表示当前 Vector
对象的容量。
基本用法
示例代码
实例
import java.util.Vector;
public class VectorCapacityExample {
public static void main(String[] args) {
// 创建一个初始容量为10的Vector
Vector<String> fruits = new Vector<>(10);
// 添加一些元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// 获取当前容量
int currentCapacity = fruits.capacity();
System.out.println("当前Vector容量: " + currentCapacity);
}
}
public class VectorCapacityExample {
public static void main(String[] args) {
// 创建一个初始容量为10的Vector
Vector<String> fruits = new Vector<>(10);
// 添加一些元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// 获取当前容量
int currentCapacity = fruits.capacity();
System.out.println("当前Vector容量: " + currentCapacity);
}
}
输出结果
当前Vector容量: 10
深入理解
Vector 的容量 vs 大小
- 容量(Capacity):Vector 内部数组的大小,即可以存储的元素总数
- 大小(Size):Vector 当前实际存储的元素数量
实例
Vector<Integer> numbers = new Vector<>(5); // 初始容量为5
numbers.add(1);
numbers.add(2);
System.out.println("容量: " + numbers.capacity()); // 输出5
System.out.println("大小: " + numbers.size()); // 输出2
numbers.add(1);
numbers.add(2);
System.out.println("容量: " + numbers.capacity()); // 输出5
System.out.println("大小: " + numbers.size()); // 输出2
容量自动增长机制
当 Vector 的大小超过当前容量时,Vector 会自动增加其容量。默认情况下,容量会翻倍增长,但也可以通过指定容量增量来改变这一行为。
实例
// 创建初始容量为3,增量为2的Vector
Vector<Integer> vec = new Vector<>(3, 2);
System.out.println("初始容量: " + vec.capacity()); // 3
vec.add(1);
vec.add(2);
vec.add(3);
vec.add(4); // 超过初始容量,自动增长
System.out.println("增长后容量: " + vec.capacity()); // 5 (3 + 2)
Vector<Integer> vec = new Vector<>(3, 2);
System.out.println("初始容量: " + vec.capacity()); // 3
vec.add(1);
vec.add(2);
vec.add(3);
vec.add(4); // 超过初始容量,自动增长
System.out.println("增长后容量: " + vec.capacity()); // 5 (3 + 2)
最佳实践
- 合理设置初始容量:如果能预估元素数量,设置合适的初始容量可以减少自动扩容带来的性能开销
- 避免频繁扩容:频繁扩容会影响性能,特别是处理大量数据时
- **适时使用 trimToSize()**:如果确定不再添加元素,可以使用
trimToSize()
将容量调整为当前大小,节省内存
实例
Vector<String> names = new Vector<>(100);
// 添加元素...
names.trimToSize(); // 调整容量为当前大小
// 添加元素...
names.trimToSize(); // 调整容量为当前大小
常见问题
Q1: capacity() 和 size() 有什么区别?
capacity()
返回的是 Vector 当前可以存储的元素总数size()
返回的是 Vector 当前实际存储的元素数量
Q2: 为什么我的 Vector 容量比实际元素多很多?
这是 Vector 的自动扩容机制导致的。当 Vector 需要扩容时,它会增加足够的空间以避免频繁扩容,这可能导致容量远大于当前存储的元素数量。
Q3: 如何减少 Vector 的容量?
可以使用 trimToSize()
方法将 Vector 的容量调整为当前大小:
vector.trimToSize();
总结
capacity()
方法是理解和使用 Java Vector 的重要方法之一。通过合理管理 Vector 的容量,可以提高程序性能并优化内存使用。记住,容量是 Vector 的内部存储空间大小,而大小是实际存储的元素数量。
点我分享笔记