Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中将逗号分隔的字符串转换为ArrayList_Java - Fatal编程技术网

如何在Java中将逗号分隔的字符串转换为ArrayList

如何在Java中将逗号分隔的字符串转换为ArrayList,java,Java,我有一个逗号分隔的字符串,我需要将其转换为ArrayList。 我试过这样做 import java.util.ArrayList; import java.util.Arrays; public class Test { public static void main(String[] args) { String CommaSeparated = "item1 , item2 , item3"; ArrayLis

我有一个逗号分隔的字符串,我需要将其转换为ArrayList。 我试过这样做

import java.util.ArrayList;
import java.util.Arrays;

    public class Test {

        public static void main(String[] args) {

            String CommaSeparated = "item1 , item2 , item3";

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

            for(String str : items)
            {
                System.out.println(str);
            }

        }

    }

当我试图强制将列表转换为arrayList时。

数组返回的
arrayList
。asList
不是
java.util.arrayList
。它是
java.util.Arrays.ArrayList
。因此,您不能将其强制转换为
java.util.ArrayList

您需要将列表传递给
java.util.ArrayList
类的构造函数:

List<String> items = new ArrayList<String>(Arrays.asList(CommaSeparated.split("\\s*,\\s*")));
List items=newarraylist(Arrays.asList(CommaSeparated.split(“\\s*,\\s*”));
或者,您可以简单地分配结果:

List<String> items = Arrays.asList(CommaSeparated.split("\\s*,\\s*"));
List items=Arrays.asList(CommaSeparated.split(“\\s*,\\s*”);
但是请注意,
Arrays.asList
返回一个固定大小的列表。您不能向其中添加或删除任何内容。如果要添加或删除某些内容,应使用第1个版本


注意:你应该使用
List
作为引用类型,而不是
ArrayList

你不能像扔糖果一样扔东西
Arrays.asList()
不返回
ArrayList
,因此无法强制转换它(它返回一个不可修改的列表)


但是,您可以执行
新建ArrayList(Arrays.asList(…)

它绝对需要是
数组列表吗?通常,您希望使用最通用的表单。如果您可以使用
列表
试试:

List<String> items = Arrays.asList(...);
List items=Arrays.asList(…);
您仍然可以按当前的方式对其进行迭代。

String CommaSeparated=“item1,item2,item3”;
String CommaSeparated = "item1 , item2 , item3";     
ArrayList<String> items = new ArrayList(Arrays.asList(CommaSeparated.split("\\s*,\\s*")));
for(String str : items)
{
    System.out.println(str);
}
ArrayList items=新的ArrayList(Arrays.asList(CommaSeparated.split(“\\s*,\\s*”)); 用于(字符串str:items) { 系统输出打印项次(str); }
请尝试使用以下代码

字符串[]温度

    /* delimiter */
    String delimiter = ",";
    /*
     * given string will be split by the argument delimiter provided.
     */
    temp = parameter.split(delimiter);
    ArrayList<String> list = new ArrayList<String>();

    for (int l = 0; l < temp.length; l++)

    {

        list.add(temp[l]);

    }
/*分隔符*/
字符串分隔符=“,”;
/*
*给定的字符串将由提供的参数分隔符分割。
*/
temp=参数分割(分隔符);
ArrayList=新建ArrayList();
对于(int l=0;l
try
ArrayList items=new ArrayList(Arrays.asList(CommaSeparated.split(\\s*,\\s*))
这个问题可能有用:他们使用相同的名称
ArrayList
两次是非常烦人的:)varargs无助于拆分字符串-上面的声明是错误的。它不会返回不可修改的列表,您仍然可以调用
set(…)
没有任何问题。@arshajii很公平,我们称之为“固定大小列表”。
    /* delimiter */
    String delimiter = ",";
    /*
     * given string will be split by the argument delimiter provided.
     */
    temp = parameter.split(delimiter);
    ArrayList<String> list = new ArrayList<String>();

    for (int l = 0; l < temp.length; l++)

    {

        list.add(temp[l]);

    }