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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM