1. 概述

在Java中,LinkedList是一种常用数据结构,支持动态内存分配和高效的插入/删除操作。打印LinkedList元素有多种方式,比如使用循环迭代器。其中最便捷的方式是使用toString()方法。

toString()方法提供了一种简单可读的方式显示LinkedList内容,无需手动遍历元素

本教程将深入探讨如何使用Java的toString()方法打印LinkedList

2. 理解LinkedList.toString()

toString()方法继承自AbstractCollection类,并在LinkedList类中被重写。该方法会自动格式化输出结构,使调试日志记录更便捷

此外,它通过消除显式迭代逻辑,降低了代码复杂度并提升了可维护性。toString()方法不接受任何参数:

public String toString()

它返回列表的人类可读字符串表示形式

2.1. 使用toString()打印LinkedList的核心优势

toString()方法提供了多项优势,可简化LinkedList打印而无需手动迭代:

  • ✅ 确保代码清晰,消除复杂循环或迭代逻辑
  • ✅ 格式化字符串输出对调试非常友好,能清晰显示LinkedList元素,便于快速定位问题
  • ✅ 默认toString()返回通用可理解的统一格式,非常适合日志记录或标准显示列表内容

⚠️ 但默认实现可能无法满足特定格式需求,此时可自定义方法增强元素表示效果。

3. 使用toString()方法打印LinkedList

直接调用toString()方法即可打印LinkedList的字符串表示形式。

首先创建非空LinkedList idsList并添加整数,同时创建空列表emptyList

LinkedList<Integer> idsList = new LinkedList<>();
idsList.add(101);
idsList.add(102);
idsList.add(103);
LinkedList<Integer> emptyList = new LinkedList<>();

接着显式调用toString()打印idsList

assertEquals("[101, 102, 103]", idsList.toString(),
  "默认LinkedList toString()应匹配预期格式");

对空列表emptyList调用toString()

assertEquals("[]", emptyList.toString(),
  "空LinkedList应返回空括号");

toString()返回idsList的字符串表示,元素用方括号包裹并以逗号分隔。对于emptyList则返回[]。值得注意的是,println(idsList)println(idsList.toString())效果相同,因为println()会自动调用列表的toString()

4. 自定义toString()方法

当默认输出格式无法满足需求时,我们可以轻松自定义toString()方法调整输出格式

自定义方法能更灵活控制元素显示方式,对调试复杂数据结构特别有用。下面自定义toString()函数,使用分隔符“-”显示元素。创建customToString()方法,并通过delete()移除末尾多余的“ - ”:

public static String customToString(LinkedList<Integer> list) {
    StringBuilder sb = new StringBuilder();
    sb.append("自定义LinkedList: ");        
    if (list.isEmpty()) {
        sb.append("空列表");
    } else {
        for (Integer item : list) {
            sb.append(item).append(" - ");
        }
        sb.delete(sb.length() - 3, sb.length());
    }
    return sb.toString();
}

测试customToString()方法,验证其是否正确使用“-”分隔符格式化元素:

String expected = "自定义LinkedList: 101 - 102 - 103";
assertEquals(expected, NewLinkedList.customToString(idsList), 
  "自定义toString()应使用' - '分隔符格式化列表元素");

当列表为空时返回“空列表”;否则遍历列表并用“-”分隔元素:

自定义LinkedList: 101 - 102 - 103
自定义LinkedList: 空列表

5. 使用toString()的最佳实践

若默认格式(方括号包裹+逗号分隔)已满足需求,应避免不必要的自定义。但当需要特定格式时,可自定义toString()或创建辅助方法。

LinkedList存储复杂对象时,直接调用toString()可能产生冗长或模糊的输出。此时建议在对象类中自定义toString()方法。为优化性能,自定义时应使用StringBuilder而非字符串拼接(+)。此外,自定义输出应保持清晰一致,尤其用于调试或日志时。

6. 总结

本文**深入探讨了如何使用Java的toString()方法打印LinkedList**。该方法为列表元素提供了便捷的显示方式,简化了调试和日志记录。

我们分析了其优缺点及自定义格式的方法,并介绍了确保输出高效可读的最佳实践。遵循这些原则,可以高效利用toString()方法打印LinkedList


原始标题:Printing out a LinkedList Using toString() | Baeldung