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

调用toString方法格式不符问题求助及代码示例

解决Queue的toString方法输出不符合预期的问题

Hey there! Let's work through your issue with getting the right output from the toString() method for your Queue.

首先说说你当前代码里的问题

  • 你在loadQueue的循环里调用了queue.toString(),但根本没用到返回的字符串——这个方法只是生成队列的字符串表示,不会修改队列本身,所以现在的调用完全是无效的。
  • 另外,Java标准库中的Queue默认toString()实现大概率和你想要的格式不匹配,你提到了自己有一个期望的toString()重写方案,那我们得确保这个重写是正确实现的。

第一步:修正loadQueue方法

添加元素的时候不需要调用toString(),这个方法应该在你需要获取队列的字符串表示时再用。另外注意:标准Queue接口用的是add()方法,push()是Deque的方法,如果你的队列是Deque实现那没问题,否则建议换成add():

public static void loadQueue(Queue<String> queue, String str) { 
    String elementArray[] = str.split(","); 
    for(int i = 0; i < elementArray.length; i++){ 
        queue.add(elementArray[i]); // 若用Deque,push()也可,根据你的实现调整
    } 
}

第二步:正确实现自定义toString()

假设你有自己的Queue实现类,把toString()重写成下面这样,就能得到你想要的[ 元素1, 元素2, ... ]格式:

@Override 
public String toString() { 
    String str = "[ "; 
    if (!isEmpty()) {
        Iterator<String> iterator = this.iterator();
        // 先添加第一个元素,避免开头或结尾多逗号
        str += iterator.next();
        while (iterator.hasNext()) {
            str += ", " + iterator.next();
        }
    }
    str += " ]";
    return str;
}

最后:正确调用toString()

当你需要输出队列的字符串格式时,直接调用即可:

// 示例用法
Queue<String> myQueue = new YourCustomQueue<>(); // 替换成你的Queue实现类
loadQueue(myQueue, "apple,banana,orange");
System.out.println(myQueue); // 直接打印对象会自动调用toString(),和myQueue.toString()效果一样

这样就能得到符合你预期的输出啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:26:35