Arrays.toString()仅适用于一维数组,对二维邻接矩阵直接调用会输出内存地址;应使用嵌套循环逐行拼接、String.join(" ", row)和String.join("\n", lines)生成紧凑格式,或用Arrays.deepToString()配合字符串替换快速调试。

Java中Arrays.toString()默认输出一维数组,对二维邻接矩阵直接调用会显示地址而非数值,需手动扁平化或逐行处理才能获得紧凑、可读的调试输出。
用嵌套循环拼接紧凑邻接矩阵字符串
对n×n邻接矩阵,每行数字左对齐、空格分隔,行间换行,避免冗余括号和逗号:
- 外层循环遍历行,内层循环拼接该行各列值,用
String.join(" ", row)或Arrays.stream(row).mapToObj(String::valueOf).collect(Collectors.joining(" ")) - 所有行收集后用
String.join("\n", lines)合并,得到类似终端表格的紧凑布局 - 示例:3×3邻接矩阵
[[0,1,0],[1,0,1],[0,1,0]]输出为
0 1 0
1 0 1
0 1 0
封装为工具方法支持不同数值类型与格式化
邻接矩阵常用int[][]或boolean[][],可重载方法并支持最小宽度对齐(如%2d)提升可读性:
- 对
int[][]:用String.format("%2d", val)确保单双位数列对齐 - 对
boolean[][]:转为'1'/'0'或'T'/'F'字符更直观 - 添加可选参数
header(如"Adjacency Matrix:")和indent(缩进前缀),便于嵌入日志上下文
利用Arrays.deepToString() + 字符串替换快速原型
适用于临时调试,不追求完美排版但省代码:
立即学习“Java免费学习笔记(深入)”;
- 调用
Arrays.deepToString(matrix)得类似[[0, 1, 0], [1, 0, 1], [0, 1, 0]]的字符串 - 链式调用
.replace("[[", "").replace("]]", "").replace("], [", "\n").replace(", ", " ") - 结果接近紧凑格式,注意首尾空格需
.trim()清理
配合IDE调试器使用技巧
在断点处直接在“Evaluate Expression”窗口输入表达式,快速查看:
- IntelliJ:输入
java.util.Arrays.stream(adjMatrix).map(java.util.Arrays::toString).collect(java.util.stream.Collectors.joining("\n")) - Eclipse:使用Display视图粘贴多行代码,或预先定义好调试工具方法并调用
- 避免在
toString()中做复杂逻辑——仅用于调试,不放入生产代码


















