java - 创建固定大小的堆栈

标签 java stack

我想在 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/

相关文章:

java - JAXB 编码 XMPP 节

Java:无法在框架上绘制二维图形

java - 检查与服务器的 TCP 连接数

java.util 包 - 类与接口(interface)

c - 使用 GOTO 时 StackFrames 会受到怎样的影响?

java - JFrames 中的多线程

java - 在 Java 中实现通用接口(interface)的枚举常量

java - 实时监控 Java 中的总线程堆栈大小

ios - 如何在IOS中维护堆栈?

crash - 如何在JVM中读取 'Top of Stack'生成的hs_err_pidxxx.log