介绍
本文主要介绍Java中数组转List的两种方式及其区别。
使用Arrays类中asList()数组转List(常见方式)
asList(T... data)
Arrays.asList(arr); 结果返回的是Arrays内部静态类ArrayList,而不是常用的ArrayList类。该类没有覆盖父类add()、**remove()**方法,故使用增、删操作会出现异常,案例如下:
@Test
private void test() {
String[] arr = new String[]{"a","b"};
List list = Arrays.asList(arr);
//对转换后的list插入一条数据
list.add("c");
//移除第一条数据
//list.remove(0);
System.out.println(list);
}
执行结果:在list.add(“c”)处抛出UnsupportedOperationException异常。
- 适用范围
Arrays.asList(arr)方式仅能用在将数组转换为List后,不需要增删其中的值,仅作为数据源读取使用。
new ArrayList()方式(支持增删操作)
通过ArrayList的构造器,将Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList转为java.util.ArrayList
List<T> list = new ArrayList<T>(Arrays.asList(arr));
@Test
private void test() {
String[] arr = new String[]{"a","b"};
List<String> list = new ArrayList<>(Arrays.asList(arr));
//对转换后的list插入一条数据
list.add("c");
//移除第一条数据
//list.remove(0);
System.out.println(list);
}
执行结果
["a","b","c"]
使用场景:需要在将数组转换为List后,对List进行增删改查操作,在List的数据量不大的情况下,可以使用。