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

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

当前回答

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

其他回答

此方法将字符串转换为一个数组,并接受两个参数:要转换的字符串和分隔字符串中的值的字符。它转换它,然后返回转换后的数组。

private String[] convertStringToArray(String stringIn, String separators){
    
    // separate string into list depending on separators
    List<String> tempList = Arrays.asList(stringIn.split(separators));
    
    // create a new pre-populated array based on the size of the list
    String[] itemsArray = new String[tempList.size()];
    
    // convert the list to an array
    itemsArray = tempList.toArray(itemsArray);
    
    return itemsArray;
}

在Java 8中使用流有许多方法来解决这个问题,但在我看来,以下一行是直接的:

String  commaSeparated = "item1 , item2 , item3";
List<String> result1 = Arrays.stream(commaSeparated.split(" , "))
                                             .collect(Collectors.toList());
List<String> result2 = Stream.of(commaSeparated.split(" , "))
                                             .collect(Collectors.toList());

这段代码会有帮助,

String myStr = "item1,item2,item3";
List myList = Arrays.asList(myStr.split(","));

下面是另一个转换CSV到ArrayList的例子:

String str="string,with,comma";
ArrayList aList= new ArrayList(Arrays.asList(str.split(",")));
for(int i=0;i<aList.size();i++)
{
    System.out.println(" -->"+aList.get(i));
}

打印你

——>字符串 ——> ——>逗号

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

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

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


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