Java中,我们有时需要对现有的字符串进行切割并转化成一个List集合。

Java.lang 包中的 String.split() 方法可对现有的字符串进行切割,并返回一个字符串数组。

举例:

String str = "aaaaaaaaaaaaaaaaaaaa";

String[] strs = str.split("");

System.out.println("Arrays.toString(strs) = " + Arrays.toString(strs));

List<String> strings1 = Arrays.asList(strs);

System.out.println("strings1 = " + strings1);

/*但需要注意的是,Arrays.asList() 返回的是 Arrays 的内部类 ArrayList,而不是我们通常定义的 java.util.ArrayList.

虽然二者都是继承自AbstractList,但 java.util.ArrayList 重写了remove()、add() 等 AbstractList 中默认抛出异常且不作任何操作的方法。

所以,如果想正常使用 List 集合中的方法,我们还需要进一步转化 list.*/

ArrayList<String> strings2 = new ArrayList<>(strings1);

System.out.println("strings2 = " + strings2);

打印结果:

Arrays.toString(strs) = [a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a]
strings1 = [a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a]
strings2 = [a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a]

需要注意的是,Arrays.asList() 返回的是 Arrays 的内部类 ArrayList,而不是我们通常定义的 java.util.ArrayList。

虽然二者都是继承自AbstractList,但 java.util.ArrayList 重写了remove()、add() 等 AbstractList 中默认抛出异常且不作任何操作的方法。

所以,如果想正常使用 List 集合中的方法,我们还需要进一步转化 list。

总结:

1,String[] str = s.split(“,”);

2,我们可以用 Arrays.asList() 方法,将数组转化为 List 集合:

 List<String> list = Arrays.asList(s.split(“,”));

3,如果想正常使用 List 集合中的方法,我们还需要进一步转化 list:

List<String> newlist = new ArrayList<String>(list);