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

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

当前回答

一个使用集合的例子。

import java.util.Collections;
 ...
String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items = new ArrayList<>();
Collections.addAll(items, commaSeparated.split("\\s*,\\s*"));
 ...

其他回答

转换逗号分隔的字符串到列表

List<String> items = Arrays.asList(str.split("\\s*,\\s*"));

上面的代码在分隔符上分割字符串,分隔符定义为:零个或多个空格、一个文字逗号、零个或多个空格,这些空格将把单词放入列表中,并折叠单词和逗号之间的任何空格。


请注意,这只是返回一个数组的包装器:例如,你不能从结果列表中。remove()。对于实际的数组列表,必须进一步使用new ArrayList<String>。

使用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(", ")

你可以结合asList和split

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

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

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

(用kotlin写)