这是我关于 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/