You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为基于List实现的Stack类编写toString()方法?

给Stack类实现toString()的简单方案

嘿,你已经搞定了List类的toString(),那Stack类的toString()就超级好实现啦——直接委托给内部的List实例就行!

因为你的Stack类是基于List来实现的,所有栈的元素都存在这个list对象里,而List已经能正确把元素转成字符串了,所以Stack的toString()只需要调用list.toString(),甚至可以包装一下让输出更明确是栈结构。

具体实现代码

把下面的方法加到你的Stack类里就行:

public class Stack {
    private List list;
    public Stack() {
        list = new List();
    }

    // 新增Stack的toString()方法
    @Override
    public String toString() {
        // 方案1:直接返回List的toString结果
        // return list.toString();
        
        // 方案2:包装成更清晰的栈标识(推荐)
        return "[Stack: " + list.toString() + "]";
    }

    // 你的内部List类(已实现toString)
    public class List{
        // 省略Node、head等成员变量和其他方法...
        public String toString() {
            Node temp = head;
            String string = "";
            while (temp != null && temp.getNext() != null) {
                string = string + temp.getElement() + ", ";
                temp = temp.getNext();
            }
            if (temp != null) {
                string = string + temp.getElement() + ".";
            }
            return string;
        }
    }
}

为什么这么做?

  • 你的List类已经处理了遍历所有节点、拼接元素的逻辑,Stack没必要重复造轮子,直接复用就好。
  • 方案2的包装写法能让输出更直观,比如如果栈里有元素1、2、3,输出会是[Stack: 1, 2, 3.],一眼就能看出来这是一个栈的内容。

测试的时候怎么用?

在主方法里创建Stack实例,push几个元素后直接打印就行:

public static void main(String[] args) {
    Stack stack = new Stack();
    stack.push("A");
    stack.push("B");
    stack.push("C");
    
    // 直接打印stack,会自动调用toString()
    System.out.println(stack);
}

这样就能完美输出栈的内容啦!

内容的提问来源于stack exchange,提问作者JavaPSPSPS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:24:15