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

Java中如何在拼接双向链表元素为字符串时添加元素间空格

解决双向链表toString()方法的空格拼接问题

修正后的toString()实现(推荐使用StringBuilder)

下面的实现可以满足元素间加空格、无尾随空格、包裹方括号的要求,同时保证效率:

@Override
public String toString() {
    StringBuilder sb = new StringBuilder("[");
    Node temp = head;
    
    while (temp != null) {
        // 不是第一个元素时先加空格
        if (sb.length() > 1) {
            sb.append(" ");
        }
        sb.append(temp.getString());
        temp = temp.next;
    }
    
    sb.append("]");
    return sb.toString();
}

另一种更直观的实现方式

先处理第一个节点,后续节点统一先加空格再追加内容,逻辑更清晰:

@Override
public String toString() {
    // 空链表直接返回[]
    if (head == null) {
        return "[]";
    }
    
    StringBuilder sb = new StringBuilder("[");
    // 先添加第一个元素
    sb.append(head.getString());
    Node temp = head.next;
    
    while (temp != null) {
        // 后续元素先加空格再追加
        sb.append(" ").append(temp.getString());
        temp = temp.next;
    }
    
    sb.append("]");
    return sb.toString();
}

原代码的问题分析

  1. 无空格拼接:原代码只是直接追加节点字符串,没有在元素间插入空格,导致输出01而非0 1。
  2. 缺少方括号:没有按照要求用[]包裹结果。
  3. 性能问题:循环中使用String str += ...会频繁创建新字符串对象,元素较多时效率低下,推荐使用StringBuilder进行可变字符串操作。

测试验证

按照你的使用示例测试:

DSEList l = new DSEList();
l.add("0");
System.out.println(l.toString()); // 输出 [0]
l.add("1");
System.out.println(l.toString()); // 输出 [0 1]
l.add("2");
System.out.println(l.toString()); // 输出 [0 1 2]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:52:56