Java 如何使用不带空格的arraylist

Java 如何使用不带空格的arraylist,java,arraylist,Java,Arraylist,有没有一种方法可以在“,”之后不加空格地获得[APAC,北美,南美,欧洲]的输出。有一个类似的问题,但它实际上使用了StringBuilder等。有没有更简单的方法来获取此输出?当您调用 [APAC, North America, South America, Europe] Java将对值调用toString方法,并输出返回的字符串 我们可以手动调用toString,然后像修改其他字符串一样修改返回的字符串。因此,如果您的列表中没有出现以下内容,则以下内容应该可以正常工作: System.o

有没有一种方法可以在“,”之后不加空格地获得[APAC,北美,南美,欧洲]的输出。有一个类似的问题,但它实际上使用了StringBuilder等。有没有更简单的方法来获取此输出?

当您调用

[APAC, North America, South America, Europe]
Java将对值调用toString方法,并输出返回的字符串

我们可以手动调用toString,然后像修改其他字符串一样修改返回的字符串。因此,如果您的列表中没有出现以下内容,则以下内容应该可以正常工作:

System.out.println(values);

创建自己的类扩展ArrayList并重写toString方法。看

System.out.println(values.toString().replace(", ", ",");
使用:


最好放在一个子类中,该子类重写toString方法,将ArrayList扩展到您自己的类中,并根据需要重写toString方法。

对于这种简单的情况,可能不是最简单的解决方案,但一般来说,您可能会受益于使用某种第三方集合库进行此类操作

如果您希望在项目中加入番石榴,这将允许您以以下方式重写上述代码:

System.out.println("["+Joiner.on(",").join(values)+"]");
另外,如果您已经在使用Java8,那么lambda表达式已经引入了mkString函数。有关如何将其用于项目集合的详细说明,请参阅本博客文章。

使用Java8流API:

Joiner joiner = Joiner.on(",");
List<String> values = ImmutableList.of("APAC", "North America", "South America", "Europe");

String valuesString = joiner.join(values);
System.out.println(valuesString);

问题仍然是…为什么?如果你读了,你会看到ArrayList是如何格式化它的内容的,而不是你的查询结果,试试像…,额外的,是由ArrayListtoString方法生成的,你不能也不应该关心这一点。如果您想以其他格式/方式显示内容,那么您应该编写代码来实现这一点,正如链接的问题/答案中所概述的那样……如何在删除空格的情况下获取列表?values.toString.replace将返回一个字符串!列表中不包含逗号或逗号后的空格,它们只出现在输出中。请修改你的问题,明确说明你想要什么,我不再问了understand@Mercenary列表中没有空格!prinln添加了用于打印的空格如果添加到列表中的原始dta包含一个模式,那么这个答案可能会导致问题,只是为了更改用于格式化的toString方法,这并不是扩展类的好理由,只是说-IMHO@MadProgrammer是的,你说得对。但是我想这个问题是为了测试一些特性而发布的。否则,这不应该出现在实际的生产代码中。此外,逗号后面的空格是一种很好的做法,checkstyle解析器很好地捕捉到了这一点:简单地扩展类以覆盖toString方法是扩展类的一个不好的理由—IMHOYes correct,但这取决于您有哪些其他选项。
System.out.println("["+Joiner.on(",").join(values)+"]");
Joiner joiner = Joiner.on(",");
List<String> values = ImmutableList.of("APAC", "North America", "South America", "Europe");

String valuesString = joiner.join(values);
System.out.println(valuesString);
System.out.println("[" + values.stream().collect(Collectors.joining(",")) + "]");