最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Arrays.deepToString用于处理深度嵌套的集合数组
时间:2026-06-24 08:44:03 编辑:袖梨 来源:一聚教程网
Arrays.deepToString()仅递归处理原生数组,对List等集合只调用其toString();遇List<int[]>时无法展开内部数组,需手动映射或转二维数组,JSON工具更适配复杂嵌套结构。
Arrays.deepToString() 本身不处理集合(如 List、Set、Map),它只识别并递归展开 Java 原生数组类型(包括 int[]、String[]、Object[] 及其任意嵌套组合)。如果数组元素是 List 或其他集合对象,deepToString() 会直接调用该集合的 toString() 方法——而标准集合类(如 ArrayList)已重写 toString(),所以能显示内容;但若集合里又嵌套了数组,那这部分数组不会被 deepToString() 自动展开。
它能处理哪些“嵌套集合数组”?
-
✅
Object[]中混装List<String>和int[]:Object[] mixed = { Arrays.asList("a", "b"), new int[]{1, 2, 3}, new String[]{"x", "y"}};System.out.println(Arrays.deepToString(mixed));// 输出:[[a, b], [1, 2, 3], [x, y]]→
List显示为[a, b](靠ArrayList.toString()),int[]和String[]则由deepToString展开。 -
❌
Object[]中放List<int[]>或List<List<String>>:List<int[]> list = Arrays.asList(new int[]{1}, new int[]{2, 3});System.out.println(Arrays.deepToString(new Object[]{list}));// 输出:[[I@..., [I@...] —— 因为 list.toString() 只打印内部 int[] 的哈希值,deepToString 不介入
关键点:
deepToString的“深度”仅限于数组类型层级,它不做反射、不遍历集合字段、不解析泛型结构。
遇到集合嵌套数组时怎么办?
-
手动展开集合中的数组:在
toString()里显式调用Arrays.deepToStringclass Data { List<int[]> rows; Data(List<int[]> rows) { this.rows = rows; } @Override public String toString() { return "Data{" + "rows=" + rows.stream() .map(Arrays::deepToString) .collect(Collectors.joining(", ", "[", "]")) + '}'; }} -
统一转成数组再处理(适合临时调试):
List<int[]> list = Arrays.asList(new int[]{1,2}, new int[]{3,4,5});int[][] arr = list.toArray(int[0][]); // 转为二维数组System.out.println(Arrays.deepToString(arr)); // [[1, 2], [3, 4, 5]] -
用 JSON 工具替代(推荐用于含集合的复杂结构):
Gson gson = new GsonBuilder().setPrettyPrinting().create();System.out.println(gson.toJson(mixed)); // 自动序列化 List、数组、嵌套结构
注意空值与类型边界
-
null元素会被打印为"null"(安全) -
Object[]中若含未重写toString()的自定义对象,仍显示ClassName@hash -
deepToString对byte[]、boolean[]等基本类型数组同样有效,无需额外适配
不复杂但容易忽略
相关文章
- 有哪些类似deepseek的软件 06-24
- 腾讯有款三国游戏叫什么 2026流行的腾讯手游排行榜 06-24
- 次元姬小说如何换绑手机号 06-24
- 《虚空之剑术士技能搭配攻略》(发挥虚空之剑的最大威力,成为无敌的剑术士!) 06-24
- centos crontab如何更改任务的执行命令 06-24
- centos crontab 怎样删除已有的任务 06-24