1. Introduction
1.介绍
In this quick tutorial, we’ll explain how to convert a List of elements to a String. This can be useful in certain scenarios, like printing the contents to the console in a human-readable form for inspection/debugging.
在这个快速教程中,我们将解释如何将一个List的元素转换为String。这在某些情况下很有用,比如将内容以人类可读的形式打印到控制台,以便检查/调试。
2. Standard toString() on a List
2.在List上的标准toString()
One of the simplest ways is to call the toString() method on the List:
最简单的方法之一是在List上调用toString()方法。
@Test
public void whenListToString_thenPrintDefault() {
List<Integer> intLIst = Arrays.asList(1, 2, 3);
System.out.println(intLIst);
}
Output:
输出。
[1, 2, 3]
This technique internally utilizes the toString() method of the type of elements within the List. In our case, we’re using the Integer type, which has a proper implementation of the toString() method.
这种技术在内部利用了List中元素类型的toString()方法。在我们的例子中,我们使用的是Integer类型,它有一个正确的toString()方法的实现。
If we’re using our custom type, such as Person, then we need to make sure that the Person class overrides the toString() method and doesn’t rely on the default implementation. If we don’t properly implement the toString() method, we might get unexpected results:
如果我们使用我们的自定义类型,例如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. Custom Implementation Using Collectors
3.使用Collectors的自定义实现
Often, we might need to display the output in a different format.
通常,我们可能需要以不同的格式来显示输出。
Compared to the previous example, let’s replace the comma (,) with a hyphen (-), and the square brackets ([, ]) with a set of curly braces ({, }):
与前面的例子相比,我们把逗号(,)换成连字符(-),把方括号([, ])换成一组大括号({, })。
@Test
public void whenCollectorsJoining_thenPrintCustom() {
List<Integer> intList = Arrays.asList(1, 2, 3);
String result = intList.stream()
.map(n -> String.valueOf(n))
.collect(Collectors.joining("-", "{", "}"));
System.out.println(result);
}
Output:
输出。
{1-2-3}
The Collectors.joining() method requires a CharSequence, so we need to map the Integer to String. We can utilize this same idea with other classes, even when we don’t have access to the code of the class.
Collectors.join()方法需要一个CharSequence,所以我们需要将Integer映射成String。我们可以在其他类中利用这个相同的想法,即使我们不能接触到该类的代码。
4. Using an External Library
4.使用一个外部库
Now we’ll use Apache Commons’ StringUtils class to achieve similar results.
现在我们将使用Apache Commons的StringUtils类来实现类似的结果。
4.1. Maven Dependency
4.1.Maven的依赖性
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
The latest version of the dependency can be found here.
最新版本的依赖关系可以在这里找到。
4.2. Implementation
4.2.实施
The implementation is literally a single method call:
该实现实际上是一个单一的方法调用。
@Test
public void whenStringUtilsJoin_thenPrintCustom() {
List<Integer> intList = Arrays.asList(1, 2, 3);
System.out.println(StringUtils.join(intList, "|"));
}
Output:
输出。
1|2|3
Again, this implementation is internally dependent on the toString() implementation of the type we’re considering.
同样,这个实现在内部依赖于我们所考虑的类型的toString()的实现。
5. Conclusion
5.结论
In this article, we learned how easy it is to convert a List to a String using different techniques.
在这篇文章中,我们了解到使用不同的技术将List转换为String是多么容易。
As always, the full source code for this article can be found over on GitHub.
一如既往,本文的完整源代码可以在GitHub上找到。