ZetCode

Java List 转 String

最后修改于 2025 年 5 月 31 日

本教程介绍了将 List 转换为 Java 中单个字符串的不同技术。

Java 提供了几种有效的方法,可以将列表元素连接成一个字符串,每种方法都适用于不同的场景。

通过选择正确的方法,您可以根据您的具体用例优化性能和可读性。

使用 String.join

使用分隔符连接列表元素的最简单方法

Main.java
void main() {

    List<String> words = List.of("a", "visit", "to", "London");
    String result = String.join("-", words);
    
    System.out.println(result);
}

这将从列表中创建一个用连字符分隔的字符串。 适用于任何 List<String>。

使用 Stream 和 Collectors.joining

Collectors.joining 方法对于将流中的元素连接成具有指定分隔符的单个字符串非常有用。

Main.java
void main() {

    List<String> words = List.of("There", "are", "three", "chairs");
    String result = words.stream().collect(Collectors.joining(" "));
    
    System.out.println(result);
}

这将使用空格连接列表元素。 您可以使用任何分隔符,甚至可以通过传递空字符串来不使用分隔符。

使用 StringBuilder

当您需要更多地控制连接过程(例如处理复杂的逻辑或大型列表)时,StringBuilder 是一个不错的选择。 它允许您有效地附加元素,而无需创建多个中间字符串,这对于性能很重要。

Main.java
void main() {

    List<String> words = List.of("There", "are", "three", "chairs");
    StringBuilder builder = new StringBuilder();
    
    for (String word : words) {
        builder.append(word).append(" ");
    }
    
    String result = builder.toString().trim();
    System.out.println(result);
}

StringBuilder 非常适合大型列表或复杂的连接逻辑。

使用 StringJoiner

当您需要创建具有特定前缀、后缀和分隔符的字符串时,StringJoiner 类非常有用。 它提供了一种简洁的方法来构建具有这些特征的字符串。

Main.java
void main() {

    List<String> words = List.of("apple", "banana", "orange");
    StringJoiner joiner = new StringJoiner(", ", "[", "]");
    
    words.forEach(joiner::add);
    
    System.out.println(joiner.toString());
}

在上面的示例中,我们创建了一个 StringJoiner,它用逗号连接元素,并将结果包装在方括号中。

循环中的手动字符串连接

您可以使用一个简单的循环手动将列表元素连接到一个字符串中。 与使用 StringBuilderString.join 相比,对于大型列表,这种方法的效率较低。

Main.java
void main() {

    List<String> words = List.of("one", "two", "three");
    String result = "";
    
    for (int i = 0; i < words.size(); i++) {
        result += words.get(i);
        if (i < words.size() - 1) {
            result += ", ";
        }
    }
    System.out.println(result);
}

本示例使用手动循环将列表的元素连接到以逗号分隔的字符串中。

转换非字符串列表

如果您有一个非字符串元素列表(例如整数),您可以使用流中的 map 函数将它们转换为字符串,然后再连接它们。 当您想将数字或其他类型的列表格式化为单个字符串时,这尤其有用。

Main.java
void main() {

    List<Integer> numbers = List.of(1, 2, 3, 4);
    
    String result = numbers.stream()
                         .map(String::valueOf)
                         .collect(Collectors.joining(","));
    
    System.out.println(result);
}

这将把一个整数列表转换成一个逗号分隔的字符串。

来源

Java String.join 文档

本教程演示了将 List 转换为 Java 中的字符串的各种方法。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。 我自 2007 年以来一直在撰写编程文章。迄今为止,我已经撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有Java教程