在Java中将List转换为String

  |   0 评论   |   243 浏览

blog090312png
图:女儿的恐龙玩具

本文翻译自

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

<dependency>
 <groupId>org.apache.commons</groupId>
 <artifactId>commons-lang3</artifactId>
 <version>3.6</version>
</dependency>

可以在此处找到最新版本的依赖项。

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上找到本文的完整源代码

评论

发表评论