在开发过程中,有时会遇到需要将数组转化为List的情况,如果不对转化后数据进行增、删操作,仅读取数据,可直接使用Arrays.asList()转化
String[] values = {"1", "2", "3"};
List<String> list = Arrays.asList(values);
System.out.println(list);
System.out.println(list.get(0));
输出结果如下:
[1, 2, 3]
1
但如果需要插入、删除数据时,直接对其操作会报java.lang.UnsupportedOperationException异常,这是因为Arrays.asList()转化的ArrayList并不是java.util.ArrayList,而是Arrays的内部类ArrayList,这两个ArrayList都继承AbstractList,但是Arrays的内部类ArrayList没有重写AbstractList的add和remove方法
所以,如果需要插入、删除数据时,可再转化一下,获得java.util.ArrayList
String[] values = {"1", "2", "3"};
List<String> list = new ArrayList<>(Arrays.asList(values));
System.out.println(list);
System.out.println(list.get(0));
list.add("4");
System.out.println(list);
list.remove("3");
System.out.println(list);
输出结果如下:
[1, 2, 3]
1
[1, 2, 3, 4]
[1, 2, 4]