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异常的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶孤崖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值