【问题标题】:How should I go about printing all elements in an ArrayList via a toString in a formatted manner?我应该如何通过 toString 以格式化的方式打印 ArrayList 中的所有元素?
【发布时间】:2020-09-25 19:53:29
【问题描述】:

我要问的是,在 Java 8 中,当我调用我的 toString() 方法(被覆盖)时,我试图以这种方式打印出每个 ArrayList<String> 的元素:

- str1
- str2
- str3

但是,当我返回 ArrayList<String> 时,它是以这种方式打印的:

[str1, str2, str3]

对我来说,为什么以这种方式打印非常有意义,但我不确定如何更改它在 toString() 中的显示方式。 请注意,这个ArrayList<String> 的大小取决于它所在的对象,除非没有其他方法,否则我宁愿不使用外部方法以这种方式打印这些元素。

此外,我认为在toString() 中以上述方式打印出ArrayList<String> 的元素甚至没有意义,而且我认为Java 无论如何也不会允许这样做。

【问题讨论】:

标签: java eclipse arraylist tostring


【解决方案1】:

一种解决方案是编写自定义List-实现来包装列表,然后覆盖toString()。这似乎有点矫枉过正。相反,我建议在Stream API 的帮助下打印List 的条目:

list.forEach(entry -> System.out.println("- " + entry));

Ideone demo

随着新实例方法String::formatted(目前是预览功能)的出现,我们也可以编写

list.stream()
    .map("- %s"::formatted)
    .forEach(System.out::println);

(抱歉,这个没有Ideone demo,Ideone 在 Java 12 上运行)

【讨论】:

    【解决方案2】:

    我只会创建另一种方法,例如 displayArrayPretty(ArrayList arr) ,您可以在其中循环并打印您想要的方式。例如。

    for (String str: arr) {
    System.out.println("- " + str + "\n");
    }
    

    【讨论】:

    • "\n" 导致双空行。
    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多