我希望打印一个Stack<Integer>对象,就像Eclipse调试器做的那样(即[1,2,3…]),但打印它与out = "output:" + Stack不会返回这个好结果。

澄清一下,我说的是Java的内置集合,所以我不能重写它的toString()。

我怎样才能得到一个漂亮的可打印版本的堆栈?


当前回答

由Apache Commons项目提供的MapUtils类提供了一个MapUtils. debugprint方法,它将漂亮地打印你的地图。

其他回答

你可以把它转换成一个数组,然后用Arrays.toString(Object[])打印出来:

System.out.println(Arrays.toString(stack.toArray()));

对于Apache Commons 3,您希望调用

StringUtils.join(myCollection, ",")

在Collection上调用Sop时要小心,它会抛出ConcurrentModification Exception。因为每个集合的内部toString方法在内部调用集合上的迭代器。

你可以试试

org.apache.commons.lang3.builder.ToStringBuilder.reflectionToString(yourCollection);
String.join(",", yourIterable);

(Java 8)