在Java中是否有任何内置的方法允许我们将逗号分隔的字符串转换为一些容器(例如数组,列表或向量)?或者我需要为此编写自定义代码吗?

String commaSeparated = "item1 , item2 , item3";
List<String> items = //method that converts above string into list??

当前回答

使用Java 8流的另外两个扩展版本如下所示

List<String> stringList1 = Arrays.stream(commaSeparated.split(",")).map(String::trim).collect(Collectors.toList());
List<String> stringList2 = Stream.of(commaSeparated.split(",")).map(String::trim).collect(Collectors.toList());

其他回答

在Kotlin中,如果你的字符串列表像这样,你可以使用这行代码将字符串转换为数组列表

var str= "item1, item2, item3, item4"
var itemsList = str.split(", ")

我通常使用预编译模式的列表。而且这也更通用一些,因为它可以考虑一些listToString表达式后面的括号。

private static final Pattern listAsString = Pattern.compile("^\\[?([^\\[\\]]*)\\]?$");

private List<String> getList(String value) {
  Matcher matcher = listAsString.matcher((String) value);
  if (matcher.matches()) {
    String[] split = matcher.group(matcher.groupCount()).split("\\s*,\\s*");
    return new ArrayList<>(Arrays.asList(split));
  }
  return Collections.emptyList();

你可以这样做。

这样就去掉了空白和用逗号分隔的地方,你不需要担心空白。

    String myString= "A, B, C, D";

    //Remove whitespace and split by comma 
    List<String> finalString= Arrays.asList(myString.split("\\s*,\\s*"));

    System.out.println(finalString);

你可以结合asList和split

Arrays.asList(CommaSeparated.split("\\s*,\\s*"))

使用Java 8流的另外两个扩展版本如下所示

List<String> stringList1 = Arrays.stream(commaSeparated.split(",")).map(String::trim).collect(Collectors.toList());
List<String> stringList2 = Stream.of(commaSeparated.split(",")).map(String::trim).collect(Collectors.toList());