📅  最后修改于: 2023-12-03 15:37:35.886000             🧑  作者: Mango
在Java中,堆栈(Stack)是一种先进后出(Last-In-First-Out,简称LIFO)的数据结构。常见的堆栈操作包括入栈(Push)和出栈(Pop),对应于数据的插入和删除操作。
在Java中,Stack类是一个继承自Vector类的类,因此它具有Vector的所有方法,同时也可以使用Stack类独有的方法。
其中,ensureCapacity() 方法是Stack类中的一个独特方法,它用于确保底层数据结构的容量足够大,以容纳指定数量的元素。如果当前容量不足,该方法会自动扩容。这个方法的签名如下:
public void ensureCapacity(int minCapacity)
其中,minCapacity参数为最小的容量大小,大于等于该值的容量将会被分配。
下面是一个使用ensureCapacity()方法的示例:
import java.util.Stack;
public class Example {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
// 使用ensureCapacity()方法,指定最小容量为20
stack.ensureCapacity(20);
// 入栈
for (int i = 0; i < 10; i++) {
stack.push(i);
}
// 打印堆栈大小
System.out.println("当前堆栈大小:" + stack.size());
// 再次使用ensureCapacity()方法,指定最小容量为30
stack.ensureCapacity(30);
// 入栈
for (int i = 10; i < 20; i++) {
stack.push(i);
}
// 打印堆栈大小
System.out.println("当前堆栈大小:" + stack.size());
}
}
上述示例代码中,首先创建了一个空的堆栈对象stack,然后使用ensureCapacity()方法指定最小容量为20,接着入栈10个元素。此时,堆栈的大小为10。
接着,再次使用ensureCapacity()方法,指定最小容量为30,再入栈10个元素。此时,堆栈的大小为20,已经超过了最初指定的容量大小。
最后,程序输出了堆栈的大小两次,分别为10和20。这说明,虽然初始容量为20,但堆栈会根据需要自动扩容。
综上所述,ensureCapacity() 方法可以确保堆栈底层数据结构的容量足够大,避免空间不足的问题。在使用堆栈时,我们可以根据需要使用该方法进行容量的调整。