参见英文答案 >
How to convert comma-separated String to ArrayList?23个
我有一个逗号分隔的字符串,我需要转换为ArrayList.
我试过这种方式
我有一个逗号分隔的字符串,我需要转换为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); } } }
它给我如图所示的运行时错误
Exception in thread "main" java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList at com.tradeking.at.process.streamer.Test.main(Test.java:14)
因为我试图强制将List转换为arrayList.
解决方法
Arrays.asList返回的ArrayList不是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<String> items = Arrays.asList(CommaSeparated.split("\\s*,\\s*"));
但请注意,Arrays.asList返回一个固定大小的列表.您无法在其中添加或删除任何内容.如果要添加或删除某些内容,则应使用第一个版本.
P.S:您应该使用List作为引用类型而不是ArrayList.