数组和List集合

数组和List集合中常用的存储数据的两种数据结构。二者在使用的过程中,可能会进行相互转化使用,那么在使用的过程中,有些注意事项,一不注意的话就很容易采坑。
1 数组转集合

    String strArray [] = new String[3];
    strArray[0] = "wer";
    strArray[1] = "23";
    strArray[2] = "543";
    List<String> list = Arrays.asList(strArray);

如果接下来使用List集合中的方法对其修改的话,那么就会出现 java.lang.UnsupportedOperationException。
list.add(“afsdf”);
list.remove(“23”);
原因在于asList()方法中返回的对象是一个Arrays中的内部类,只是提供了个别方法的实现。源码如下所示:图1
而如果想要修改原有数组中的数据,可以通过list集合提供的set(int index ,E element)方法来使用。

 list.set(0,"hello");

如果说想要用Arrays.as()方法,又想使用动态的改变集合元素的数量,可以使用如下的方法。

  List<String> strList = new java.util.ArrayList<String>(Arrays.asList(strArray));

这样就可以大胆的使用add(),remove方法了。
2 集合转数组
List list = new ArrayList<>();

        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        Object[] objects = list.toArray();
        String[] str1 = new String[2];
        list.toArray(str1);
        String[] str2 = new String[3];
        list.toArray(str2);
        System.out.println(Arrays.asList(objects));
        System.out.println(Arrays.asList(str1));
        System.out.println(Arrays.asList(str2));

执行结果如下所示:
objects结果[a, b, c]
str1结果[null, null]
str2结果[a, b, c]
list.toArray()这种方法不推荐使用,因为造成泛型丢失,
如果想要通过list.toArray(T[] a)的方式进行,那么分两种情况,如果构建的数组大小小于集合的长度,那么就会出现str1的结果,如果构建数组的大小大于等于集合的长度,结果就非常的好。如同str2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值