在 Java 中,将 List 转换为字符串有几种常见的方法,具体取决于你的需求(是否需要自定义分隔符、是否需要处理 null 值等),以下是几种主要的方法:
使用 String.join()(Java 8+)
List 的元素都是字符串,或者可以转换为字符串,可以使用 String.join() 方法。
示例:
import java.util.Arrays;
import java.util.List;
public class ListToString {
public static void main(String[] args) {
List<String> stringList = Arrays.asList("apple", "banana", "cherry");
// 使用逗号作为分隔符
String result = String.join(", ", stringList);
System.out.println(result); // 输出: apple, banana, cherry
}
}
适用场景:
List的元素已经是String类型。List包含非String元素,需要先转换为String(例如使用map+toString)。
使用 Collectors.joining()(Java 8+ Stream API)
List 的元素不是 String,或者需要更灵活的控制(如自定义前后缀、分隔符),可以使用 Stream + Collectors.joining()。
示例:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class ListToString {
public static void main(String[] args) {
List<Integer> numberList = Arrays.asList(1, 2, 3);
// 转换为字符串并用 " | " 连接
String result = numberList.stream()
.map(Object::toString) // 将 Integer 转为 String
.collect(Collectors.joining(" | "));
System.out.println(result); // 输出: 1 | 2 | 3
}
}
适用场景:
List的元素不是String,但可以调用toString()。- 需要自定义分隔符、前缀、后缀。
使用 StringBuilder 或 StringBuffer(手动拼接)
如果不想使用 Java 8+ 的 Stream API,可以用 StringBuilder 手动拼接。
示例:
import java.util.Arrays;
import java.util.List;
public class ListToString {
public static void main(String[] args) {
List<String> stringList = Arrays.asList("a", "b", "c");
StringBuilder sb = new StringBuilder();
for (String item : stringList) {
if (sb.length() > 0) {
sb.append(", "); // 添加分隔符
}
sb.append(item);
}
String result = sb.toString();
System.out.println(result); // 输出: a, b, c
}
}
适用场景:
- 需要手动控制拼接逻辑(如处理
null值、特殊格式)。 - 适用于 Java 7 或更低版本。
使用 Apache Commons Lang(第三方库)
如果项目已经使用了 Apache Commons Lang,可以用 StringUtils.join()。
示例:
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.List;
public class ListToString {
public static void main(String[] args) {
List<String> stringList = Arrays.asList("x", "y", "z");
String result = StringUtils.join(stringList, " - ");
System.out.println(result); // 输出: x - y - z
}
}
适用场景:
- 项目已引入
commons-lang3依赖。 - 需要简洁的代码。
处理 null 值
List 或其元素可能为 null,需要额外处理:
示例(使用 Stream + 过滤 null):
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class ListToString {
public static void main(String[] args) {
List<String> stringList = Arrays.asList("a", null, "b", null, "c");
String result = stringList.stream()
.filter(item -> item != null) // 过滤掉 null
.collect(Collectors.joining(", "));
System.out.println(result); // 输出: a, b, c
}
}
| 方法 | 适用场景 | Java 版本 | 特点 |
|---|---|---|---|
String.join() |
List<String> |
Java 8+ | 简单直接 |
Collectors.joining() |
非字符串 List 或需自定义格式 |
Java 8+ | 灵活 |
StringBuilder |
手动控制拼接 | 所有版本 | 灵活但代码稍多 |
StringUtils.join() |
已用 Apache Commons | 所有版本 | 简洁(需依赖) |
选择最适合你需求的方法即可!
