图:女儿的恐龙玩具
1.简介
在这篇快速文章中,我们将了解如何将元素列表转换为String。这在某些情况下可能很有用,例如以可读的形式将内容打印到控制台以进行检查/调试。
2.使用 List 的 toString()方法打印
@Test
public void whenListToString_thenPrintDefault() {
List intLIst = Arrays.asList(1,2,3);
System.out.println(intLIst);
}
输出
[1, 2, 3]
此处会调用内部使用List中元素类型的toString()方法。在我们的例子中,我们使用的是Integer类型,它具有toString()方法的正确实现。
如果我们使用自定义类型,比如Person,那么我们需要确保Person类重写toString()方法并且不依赖于默认实现。如果未正确实现toString()方法,则可能会出现意外结果:
[org.baeldung.java.lists.ListToSTring$Person@1edf1c96,
org.baeldung.java.lists.ListToSTring$Person@368102c8,
org.baeldung.java.lists.ListToSTring$Person@6996db8]
3.使用 Collectors 实现
通常,我们可能需要以不同的格式显示输出。与前面的示例相比,让我们用连字符(-)替换逗号 (,) ,用一组花括号({,})替换方括号([,]):
@Test
public void whenCollectorsJoining thenPrintCustom() {
List intList = Arrays.asList(1,2,3);
String result = intList.stream()
.map(n -> String.valueOf(n))
.collect(Collectors.joining("-","{","}"));`
System.out.println(result);
}
输出结果:
{1-2-3}
Collectors.joining()方法需要CharSequence,因此我们需要将Integer映射到String。即使我们无法访问该类的代码,也可以在任何其他类的情况下使用相同的想法。
4.使用第三方库
下面将看到使用Apache Commons的StringUtils类来实现类似的结果。
4.1Maven Dependency
org.apache.commons
commons-lang3
3.6
可以在此处找到最新版本的依赖项。
4.2实现
该实现实际上是单个方法调用:
@Test
public void whenStringUtilsJoin_thenPrintCustom() {
List intList = Arrays.asList(1,2,3);
System.out.println(StringUtils.join(intList,"|"));
}
输出:
1|2|3
同样,这个实现在内部依赖于我们正在考虑的类型的toString()实现。
5.结语
在本文中,我们看到使用不同的技术将List转换为String是多么容易。与往常一样,可以在GitHub上找到本文的完整源代码。
>>> 每个人都觉得自己有理由,所以需要理解,但理解并不能化解所有局限,所以需要宽容。 <<<