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(); }
原代码的问题分析
- 无空格拼接:原代码只是直接追加节点字符串,没有在元素间插入空格,导致输出
01而非0 1。 - 缺少方括号:没有按照要求用
[]包裹结果。 - 性能问题:循环中使用
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
相关产品推荐
相关产品推荐

