调用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
相关产品推荐
相关产品推荐

