java - 在Java中递归转储聚合结构(Collection,Array)的内容

标签 java

这是我关于 Stackoverflow 的第一个问题,如果您在我的第一篇文章中发现任何荒谬之处,请多多包涵。仅供引用,我已经阅读了 SO 常见问题解答,并且了解其各种政策。你看,我是一个大量使用 PHP、Perl、Python、ROR 等语言的人,最近我“上下文切换”到 Java EE。你看,我使用过的几种语言都有一个结构,使我能够在没有 for/foreach/for..in 循环的情况下递归地转储聚合结构的内容

例如,

a = Any composite Data structure 

PHP 有

var_dump() and print_r() 

Perl 有

Data::Dumper

ROR 有

PrettyPrint

Python 有

pprint module
.

所以我的问题是,

在 Java 世界中是否有任何这些的等价物?当我以前使用这些语言(PHP/Perl/Python/ROR)中的任何一种时,我发现转储复合数据结构的内容以检查它的外观然后进一步处理它(或决定如何处理)非常方便进一步处理)

感谢您的宝贵时间,如果我的帖子忽略了任何 SO 规则,我们深表歉意。

最佳答案

java.util 集合有 toString() 会递归地转出列表/集合/ map 等的细节。这需要存储在集合定义了有用的 toString()

然而,对于数组来说,它会失败,因为 Java 没有一个有用的默认数组 toString()。如果您知道您正在处理一个数组,那么您可以使用 Arrays.deepToString() 实用方法(有关详细信息,请参阅 guido's response)。

例如,这段代码:

final Map<String, Object> map = new HashMap<String, Object>();
final List<String> nested = Arrays.asList("foo", "bar", "baz");

map.put("given", "Arthur");
map.put("family", "Dent");
map.put("nested", nested);

System.out.println(map);

产生这个:

{nested=[foo, bar, baz], given=Arthur, family=Dent}

关于java - 在Java中递归转储聚合结构(Collection,Array)的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11027157/

相关文章:

JavaFX:如何覆盖自定义对话框中的按钮操作

java - 自定义错误页面不适用于 Weld 和 Tomcat7

java - 文件中的空行

java - hh :mm a and HH:mm a 之间的区别

java - 调整表格列的大小以填充所有可用空间

java - 在 Android 应用程序中注册用户指纹

java - 如何测试仅传递其子对象并期望父对象继承其子对象的更新值的方法?

java - 实体控制边界和 CEC 模式

java - 后台服务的延迟通知

java - Hibernate 在不引用其他表的情况下持久化 Map<String, String>