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