在Java中漂亮地打印HashSet

5

我找到了很多与这个问题相似的问题,但并不完全符合我的需求。对于许多专家来说,这个问题可能非常简单:我有一个Hashset,其中包含我的自定义bean作为其内容:

Set<TableColumnBean> mySet = new HashSet<TableColumnBean>();
//loop and add values to Hashset
for(String str : tableColumnBeanMap.keySet()){
    mySet.add(new TableColumnBean(tableColumnBeanMap.get(str).getTable, `tableColumnBeanMap.get(str).getColumn))`
}

这里的tableColumnBeanMap是一个Map,其中包含TableColumnBean类型的bean列表。 TableColumnBean是一个简单的bean,它有两个属性table和column。在循环结束时,我想要漂亮地打印出set的内容,这对于保留作为调试日志选项非常有用。我考虑使用java for循环遍历set并打印内容。但在其他地方,我使用了Jackson库,例如:

new ObjectMapper().writeWithDefaultPrettyPrinter().writeValueAsString(myMap)

有没有类似于在地图上很好用的东西,也可以在集合上使用呢?(最好是像Jackson的pretty print那样的一行代码-因为它能够产生易于阅读的输出格式,而且不会使你的代码变得杂乱无章)。


1
为什么不将你的集合转换为映射,然后使用ObjectMapper呢? - Salman Salman
嗨Salman,这种情况下我没有一个键,只有一个要添加的bean。我认为在需要键值对时使用Map可能更合适。对我来说,列表也可以完成工作,但我只想要唯一的元素,所以选择了集合(set)。 - JavaTec
1
使用 new ObjectMapper().writeWithDefaultPrettyPrinter().writeValueAsString(mySet) 有什么问题? - Wilson
嗨,威尔逊,这很尴尬,但我承认我的愚蠢错误。你是对的 - 在这种情况下prettyprint是有效的。我误读了另一个错误,由同一行代码引发,过早下结论并认为prettyprint对于set无效,而实际上它是有效的。谢谢你指出来!对于这样一个愚蠢的错误,我深表歉意。 - JavaTec
1个回答

6

使用 Arrays

import java.util.*;

Arrays.toString(mySet.toArray())

创建一个由mySet元素组成的字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接