今天学习大神的代码的时候,发现大神使用了Arrays.asList()这个方法,点进去一看还是Android原生方法,不容错过,抓紧机会,向大神看齐
主要作用:将数组转化为List
注意事项:
- 该方法不适合基本数据类型(byte,short,int,long,float,double,boolean)
- 该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新
- 不支持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,然后一个一个的添加元素。
参考博客: