ToString - 格式化(String Builder)

时间:2016-05-06 05:00:16

标签: java formatting tostring stringbuilder

问题:如何使我的字符串看起来像这样,而不是使用(String Builder)

应该是什么样的:

"刺客信条四:黑旗",发布日期:2013年11月29日

"光之子",发布日期:2014年5月1日

"龙腾世纪:宗教裁判所",发布日期:2014年12月18日

我知道应该使用某种形式的StringBuilder但是我不知道如何格式化它。正如我的游戏打印为:

我的样子:

<&P> [&#34;刺客信条四:黑旗&#34;,发布日期:2013年11月29日&#34;光之子&#34;,发布日期:2014年5月1日  &#34;龙腾世纪:宗教裁判所&#34;,发布日期:2014年12月18日]

下面是我的代码片段 - 日期显示正常,只是它们没有分成多行

@Override
public String toString() {  
    DateFormat date = new SimpleDateFormat("MMM dd, yyyy");   
       return("\"" + game + "\"" + ", " + "released on: " + date.format(released.getTime()));
 }

2 个答案:

答案 0 :(得分:0)

问题是你在一个没有在每个元素的toString之间添加换行符的集合上调用toString。

一种解决方案是迭代集合并在每个项目上调用System.out.println。

另一个解决方案是将List转换为流,然后使用流API将每个项映射到其toString,然后使用&#34; \ n&#34;作为分离者,例如

myList.stream().map(g -> g.toString()).collect(Collectors.joining("\n"))

答案 1 :(得分:0)

由于您没有告诉我声明的toString方法是哪个类,我将其称为ClassA

您在评论中说您正在使用链接列表来存储ClassA个对象。因此,我将向您展示如何在链表中打印每个项目:

StringBuilder builder = new StringBuilder(); // StringBuilder is used to concatenate all the items in the list
for (ClassA item : theLinkedList) {
    builder.append(item.toString());
    builder.append("\n"); // Here I add the new line
}
System.out.println(builder);

如果您使用的是Java8,您可以使用stream和`map来执行此操作,如Gene Taylor的答案所示。它更优雅。

相关问题