List<String>转为String[]数组,String[]数组转为List<String>
·
1.Java(基本数据类型)数组转List简述
2.List转Java(基本数据类型)数组简述
3.List<String>转为String[]数组,String[]数组转为List<String>
1.两者的区别
结构方面:
List< String >:泛型,非定长,可变。
String[]:数组,定长,不可变。
2.1 两者的互相转换Arrays.asList
@Test
public void test1(){
//定义一个字符长度为5的字符串
String[] strings = new String[5];
strings[0] = "a";
strings[1] = "b";
strings[2] = "c";
strings[3] = "d";
strings[4] = "e";
//调用Arrays中的asList方法将String[]转化为List<String>
List<String> list = Arrays.asList(strings);
// list.add("s");
System.out.println("list<String>:"+list.toString());
//调用toArray方法将List<String>转化为String[]
String[] strs1 = list.toArray(new String[]{});// 方式一
String[] strs2 = list.toArray(new String[0]);// 方式一变形
String[] strs3 = list.toArray(new String[list.size()]);// 方式二
System.out.println("String[]:"+Arrays.toString(strs1));
}
输出的结果为:
list:[a, b, c, d, e]
String[]:[a, b, c, d, e]
Process finished with exit code 0
2.2 两者的互相转换Stream的更优写法
String[] temp = new String[3];
temp[0] = "1";
temp[1] = "2";
temp[2] = "3";
//转换为Stream
Stream<String> stream = Arrays.stream(temp);
List<String> list = stream.collect(Collectors.toList());
System.out.println(list);
//新增344
list.add("344");
System.out.println(list);
输出的结果为:
[1, 2, 3]
[1, 2, 3, 344]
值得注意的是
List list = Arrays.asList(strings);
由String数组转为的List的list对象,不可以用add这个参数,不然会报UnsupportedOperationException异常,原因asList是通过新建一个ArrayList来接收String[]的数值。这个ArrayList不是,我们熟悉的那个ArrayList,也就是可以通过add,remove方法进行操作的ArrayList,如下图,很明显,这并不是ArrayList类,而是Arrays里面新建了一个内部类ArrayList,而这个内部类是继承于AbstractList类,AbstractList类里面的add方法是会抛出UnsupportedOperationException异常的。
更多推荐
已为社区贡献9条内容
所有评论(0)