Arrays.asList()知识点

今天学习大神的代码的时候,发现大神使用了Arrays.asList()这个方法,点进去一看还是Android原生方法,不容错过,抓紧机会,向大神看齐

主要作用:将数组转化为List

注意事项:

  1. 该方法不适合基本数据类型(byte,short,int,long,float,double,boolean)
  2. 该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新
  3. 不支持add和remove 方法

使用方法:

    //String[] arrays = new String[]{"aa","bb","cc"};
    Integer[] arrays = new Integer[]{1,2,3,4};
    List<Integer> list = Arrays.asList(arrays);
    String str = "";
    for (int i = 0; i < list.size();i++){
        str += list.get(i)+"、";
    }
    TextView textView = findViewById(R.id.textView);
    textView.setText("输出结果:"+str);

探究list不能add与remove的原因:

使用Arrays.asList()方法得到的list长度是不可改变的,当你向这个list添加或者删除一个元素时(例如list.add(“dd”);)程序就会抛出异常:

怎么会这样呢?只需要看看asList()方法是怎么实现的就可以了

当看到这段代码可以感觉没啥问题,不就返回一个ArrayList对象吗?实际问题就出现在这里,这个ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList包的,他是Arrays类自己定义的一个静态方法,这个内部类没有实现add(),remove()方法,而是直接使用父类AbstractList的相应方法。

而AbstractList中的add()和remove()是直接抛出java.lang.UnsupportedOperationException 异常的。

总结:

如果你的List只是用来遍历的,就用Arrays.asList()。

如果你的list还有添加或删除元素,还是乖乖的new一个java.util.ArrayList,然后一个一个的添加元素。

参考博客:

https://blog.csdn.net/kzadmxz/article/details/80394351

https://www.cnblogs.com/shanheyongmu/p/6364320.html

转载于:https://www.cnblogs.com/Ayinger/p/10968739.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值