一、数组转List集合
String[] str = new String[] {"1", "2", "3"};
// String数组转List集合
List<String> list = Arrays.asList(str);
// log打印List集合
for (int i = 0; i < list.size(); i++) {
Log.i(TAG,"list: " + list.get(i));
}
asList()方法注意事项:
1、该方法适用于对象数据类型的数组,如String类型、Integer类型等等(对象数组指的是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋给数组)。
2、该方法不建议使用基本数据类型的数组(byte,short,int,long,float,double,boolean)。
3、该方法将数组与List列表连接起来:当更新其一个时,另一个自动更新。
4、不支持add()、remove()、clear()等方法。
5、该方法得到的List的长度是不可变的。
- 当List添加或删除一个元素时(如 list.add(“d”);),程序就会抛出异常(java.lang.UnsupportedOperationException)。
- 为什么会抛出异常?根据asList()源码:public static List asList(T… a) {return new ArrayList<>(a);},我们可以知道,返回一个ArrayList对象,但这个ArrayList对象并不是java.util包下的,而是java.util.Arrays.ArrayList类中。它是由Arrays类定义的一个静态内部类,这个内部类里没有实现add()、remove()方法,而是直接使用它父类AbstractList的相应方法。而AbstractList中的add()方法和remove()方法是直接抛出java.lang.UnsupportedOperationException异常的!
二、List集合转数组
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
// List集合转成数组
String[] str = list.toArray(new String[0]);
// log打印数组
for (int i = 0; i < str.length; i++) {
Log.i(TAG,"str: " + str[i]);
}
三、链接
Arrays官方API:链接