杰瑞科技汇

Java List转字符串,逗号分隔怎么实现?

在 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()
  • 需要自定义分隔符、前缀、后缀。

使用 StringBuilderStringBuffer(手动拼接)

如果不想使用 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 所有版本 简洁(需依赖)

选择最适合你需求的方法即可!

分享:
扫描分享到社交APP
上一篇
下一篇