Java ArrayList 确保容量有效性的方法
在 Java 中,ArrayList
是一个动态数组列表,它允许你添加、删除和访问元素。ensureCapacity
是一个用于扩展或收缩数组容量的方法。然而,在某种情况下,ensureCapacity
可能无法正常工作。
问题
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
System.out.println("List size: " + list.size()); // 输出:List size: 2
list.ensureCapacity(10);
System.out.println("New list size: " + list.size()); // 输出:New list size: 10
}
}
在这个示例中,我们创建了一个 ArrayList
,并向其中添加两个元素。然后,我们调用 ensureCapacity
方法来扩展列表容量,使其可容纳 10 个元素。但奇怪的是,ensureCapacity
似乎没有生效,list.size()
仍然等于 2。
原因和解决方案
问题原因可能是:ensureCapacity
无法正常工作,因为列表中已有元素数量超过了容量。在这种情况下,我们需要在添加元素之前调用 ensureCapacity
,而不是在添加元素之后。
解决方案如下:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
System.out.println("List size: " + list.size()); // 输出:List size: 2
// 在添加元素之前调用 ensureCapacity
list.ensureCapacity(10);
System.out.println("New list size: " + list.size()); // 输出:New list size: 10
// 添加元素
list.add("Another element");
System.out.println("New list size: " + list.size()); // 输出:New list size: 11
}
}
现在,我们在添加元素之前调用 ensureCapacity
,并添加另一个元素。这次,ensureCapacity
正常工作,list.size()
变为 11。
结论
当使用 ArrayList
时,确保在添加元素之前调用 ensureCapacity
,以防止数组容量不足。在本例中,添加元素之后调用 ensureCapacity
没有效果。
领取专属 10元无门槛券
手把手带您无忧上云