首页 > 其他 > 详细

Arrays.asList()知识点

时间:2019-06-03 17:38:45      阅读:121      评论:0      收藏:0      [点我收藏+]

今天学习大神的代码的时候,发现大神使用了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

Arrays.asList()知识点

原文:https://www.cnblogs.com/Ayinger/p/10968739.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!