zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【博弈】UVA10561 Treblecross
    2021牛客暑期多校训练营2 部分题解
    2021牛客暑期多校训练营1 部分题解
    变量
    第六次作业
    第五次作业
    第四次作业
    第三次作业
    第二次作业
    c#下载网页源码的两种方法
  • 原文地址:https://www.cnblogs.com/Ayinger/p/10968739.html
Copyright © 2011-2022 走看看