Java 中的 Vector.capacity() 方法
在 Java 中,Vector 是一个非常常用的容器类。与 ArrayList 相似,但 Vector 同步,并且默认情况下它的初始容量比 ArrayList 大。Vector 类还提供了一些有用的方法,其中 Vector.capacity() 就是其中之一。
Vector 类简介
Vector 是 Java 中一个非常基础的容器类,它的作用和 ArrayList 类似,都是用来储存一组对象。但不同于 ArrayList 的是,Vector 是一个同步容器,并且默认情况下 Vector 的初始容量比 ArrayList 大。
在创建 Vector 对象时,我们可以指定它的初始容量和每次扩容的容量增量。当 Vector 中储存的元素个数达到容器的最大容量后,就需要进行扩容,扩容的方式也比较简单,就是新建一个更大空间的数组,并把原来数组中的元素复制到新数组中,然后再把新元素放入到新数组中。
Vector.capacity() 方法简介
Vector.capacity() 方法返回当前 Vector 容器的容量。所谓容量,指的是在不进行扩容的情况下,Vector 容器所能容纳的最大元素个数。
// Java 代码示例
import java.util.*;
public class VectorDemo {
public static void main(String[] args) {
Vector<Integer> v = new Vector<>(5, 2);
System.out.println("Initial capacity: " + v.capacity());
for (int i=0; i<20; i++) {
v.addElement(i);
}
System.out.println("Capacity after twenty additions: " + v.capacity());
}
}
在上面的示例代码中,我们新建了一个 initial capacity 为 5,capacity increment 为 2 的 Vector 对象。接着,在 Vector 中添加了 20 个元素后,我们打印出了当前 Vector 的容量。运行代码后,可以看到输出的结果如下:
Initial capacity: 5
Capacity after twenty additions: 27
可以看出,虽然我们只添加了 20 个元素,但 Vector 的容量已经增长到了 27。
Vector.capacity() 方法的使用场景
Vector.capacity() 方法的使用场景主要有两个:
- 用来判断 Vector 是否需要进行扩容。通过 Vector.capacity() 方法可以知道当前 Vector 的容量,从而判断是否需要进行扩容,以优化 Vector 容器的使用。
-
用来优化 Vector 的扩容。当我们需要向 Vector 中添加大量元素时,比较合适的做法,是一开始就设置一个较大的初始容量。这样可以减少扩容的次数,提高代码执行效率。
// Java 代码示例
import java.util.*;
public class VectorDemo {
public static void main(String[] args) {
Vector<Integer> v = new Vector<>(1000, 200);
System.out.println("Initial capacity: " + v.capacity());
for (int i=0; i<2000; i++) {
v.addElement(i);
}
System.out.println("Capacity after two thousand additions: " + v.capacity());
}
}
在上面的示例代码中,我们新建了一个 initial capacity 为 1000,capacity increment 为 200 的 Vector 对象。接着,在 Vector 中添加了 2000 个元素后,我们打印出了当前 Vector 的容量。运行代码后,可以看到输出的结果如下:
Initial capacity: 1000
Capacity after two thousand additions: 3608
这次我们设置了一个比较大的 initial capacity,从而使得 Vector 不必进行太多次扩容,以优化 Vector 容器的使用。
Vector.capacity() 和 Vector.size() 区别
Vector.capacity() 方法和 Vector.size() 方法在 Vector 中的作用是不同的。
Vector.capacity() 方法返回当前 Vector 容器的容量,指的是在不进行扩容的情况下,Vector 容器所能容纳的最大元素个数。而 Vector.size() 方法返回当前 Vector 容器中实际存储的元素个数。
// Java 代码示例
import java.util.*;
public class VectorDemo {
public static void main(String[] args) {
Vector<Integer> v = new Vector<>(5, 2);
System.out.println("Initial capacity: " + v.capacity());
System.out.println("Initial size: " + v.size());
for (int i=0; i<20; i++) {
v.addElement(i);
}
System.out.println("Capacity after twenty additions: " + v.capacity());
System.out.println("Size after twenty additions: " + v.size());
}
}
在上面的示例代码中,我们分别使用 Vector.capacity() 方法和 Vector.size() 方法来输出当前 Vector 容器的容量和实际存储的元素个数。运行代码后,可以看到输出的结果如下:
Initial capacity: 5
Initial size: 0
Capacity after twenty additions: 27
Size after twenty additions: 20
可以看出,虽然 Vector 的初始容量和实际存储的元素个数都为 0,但它们是不同的概念。在添加了 20 个元素后,Vector 容器的容量已经增长到了 27,但实际存储的元素个数为 20。
结论
在 Java 中,Vector 是一个非常常用的容器类,它与 ArrayList 类似,但 Vector 是一个同步容器,并且默认情况下它的初始容量比 ArrayList 大。除此之外,Vector 类还提供了一些有用的方法,其中 Vector.capacity() 就是其中之一。通过 Vector.capacity() 方法,我们可以方便地获取当前 Vector 容器的容量,并对 Vector 容器的使用进行优化。同时,需要注意的是 Vector.capacity() 方法返回的是 Vector 容器的容量,而不是实际存储的元素个数,这点需要与 Vector.size() 方法进行区分。