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

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

当前回答

您可以使用Guava分割字符串,并将其转换为ArrayList。这也适用于空字符串,并返回一个空列表。

import com.google.common.base.Splitter;
import com.google.common.collect.Lists;

String commaSeparated = "item1 , item2 , item3";

// Split string into list, trimming each item and removing empty items
ArrayList<String> list = Lists.newArrayList(Splitter.on(',').trimResults().omitEmptyStrings().splitToList(commaSeparated));
System.out.println(list);

list.add("another item");
System.out.println(list);

输出如下:

[item1, item2, item3]
[item1, item2, item3, another item]

你也可以不使用番石榴使用以下方法:

  public static List<String> getStringAsList(String input) {
    if (input == null || input.trim().length() == 0) {
      return Collections.emptyList();
    }

    final String separators = "[;:,-]";
    var result =
        Splitter.on(CharMatcher.anyOf(separators))
            .trimResults()
            .omitEmptyStrings()
            .splitToList(input);

    return result;
  }

其他回答

使用Splitter类可以获得相同的结果。

var list = Splitter.on(",").splitToList(YourStringVariable)

(用kotlin写)

数组。asList返回一个由数组支持的固定大小的List。如果你想要一个普通的可变java.util.ArrayList,你需要这样做:

List<String> list = new ArrayList<String>(Arrays.asList(string.split(" , ")));

或者,用番石榴:

List<String> list = Lists.newArrayList(Splitter.on(" , ").split(string));

使用Splitter可以更灵活地分割字符串,例如,可以跳过结果中的空字符串和修剪结果。它的怪异行为也比String少。拆分以及不需要你通过正则表达式拆分(这只是一个选项)。

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

var str= "item1, item2, item3, item4"
var itemsList = str.split(", ")
List<String> items = Arrays.asList(commaSeparated.split(","));

这应该对你有用。

你可以先使用String.split(",")分割它们,然后使用Arrays.asList(array)将返回的String数组转换为数组列表