我想在 Java 中创建一个堆栈,但要固定大小。例如,创建一个新堆栈,将大小设置为 10,然后当我将项目插入堆栈时,它会填满,当它填满十个时,堆栈中的最后一个项目被推开(移除)。我想使用 Stack,因为它使用 LIFO 并且非常适合我的需求。
但是 Stack 从 Vector 继承的 setSize() 方法似乎并没有真正限制 Stack 的大小。我想我错过了关于 Stacks 如何工作的一些东西,或者 Stacks 并不意味着受到限制,所以这是不可能的。请教育我!
最佳答案
这里是 SizedStack
扩展 Stack
的类型:
import java.util.Stack;
public class SizedStack<T> extends Stack<T> {
private int maxSize;
public SizedStack(int size) {
super();
this.maxSize = size;
}
@Override
public T push(T object) {
//If the stack is too big, remove elements until it's the right size.
while (this.size() >= maxSize) {
this.remove(0);
}
return super.push(object);
}
}
像这样使用它:Stack<Double> mySizedStack = new SizedStack<Double>(10);
.除了大小之外,它的操作与任何其他 Stack
一样.
关于java - 创建固定大小的堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7727919/