如何解决我应该如何以格式化的方式通过toString打印ArrayList中的所有元素?
我要问的是,在Java 8中,当我调用toString()
方法(重写)时,我试图以这种方式打印出各个ArrayList<String>
的元素:>
- str1
- str2
- str3
但是,当我返回ArrayList<String>
时,它是以这种方式打印的:
[str1,str2,str3]
对我来说,为什么以这种方式打印是完全合理的,但是我不确定如何改变toString()
中的显示方式。
请注意,此ArrayList<String>
的大小会根据其所在的对象而有所不同,并且我宁愿不使用外部方法以这种方式打印这些元素,除非没有其他方法可以这样做。
此外,我认为在toString()
中以上述方式打印ArrayList<String>
的元素中的for循环甚至都不有意义,而且我认为Java也不会无论如何都允许。
解决方法
一种解决方案是编写一个自定义List
实现以包装列表,然后覆盖toString()
。这似乎太过分了。相反,我建议在Stream
API的帮助下打印List
的条目:
list.forEach(entry -> System.out.println("- " + entry));
随着新实例方法String::formatted
(当前为预览功能)的出现,我们还可以编写
list.stream()
.map("- %s"::formatted)
.forEach(System.out::println);
(很抱歉,没有 Ideone演示,Idone在Java 12上运行)
,我将创建另一个方法,如displayArrayPretty(ArrayList arr),在其中循环遍历并打印所需的内容。例如。
for (String str: arr) {
System.out.println("- " + str + "\n");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。