Java数组转List的方式
2021-03-01 本文已影响0人
因你而在_caiyq
原创文章,转载请注明原文章地址,谢谢!
方式一
通过Arrays.asList(arr)方式,将数组转换为List后,不能对该List进行添加和删除操作,否则会抛出异常。
public static void main(String[] args) {
Integer[] arr = {1, 2, 3};
List<Integer> list = Arrays.asList(arr);
System.out.println(list);
list.add(4);
System.out.println(list);
}
执行结果
[1, 2, 3]
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.example.demo.test.ListTest.main(ListTest.java:22)
分析
可以打开asList方法的源码查看,该方法的返回值是java.util.Arrays.ArrayList,它是Arrays类中的一个静态内部类,并非常用的java.util.ArrayList类,该类不具备add方法或者remove方法,所以示例代码中调用add方法会报错UnsupportedOperationException。
方式二
通过Arrays.asList(arr)方式,将数组转换为List后,再利用java.util.ArrayList类的构造器,将java.util.Arrays.ArrayList类转换为java.util.ArrayList类。
public static void main(String[] args) {
Integer[] arr = {1, 2, 3};
List<Integer> list = Arrays.asList(arr);
System.out.println(list);
List<Integer> newList = new ArrayList<>(list);
newList.add(4);
System.out.println(newList);
}
执行结果
[1, 2, 3]
[1, 2, 3, 4]
方式三
通过Collections.addAll(arrayList, arr)方式转换,先创建一个和数组相同长度的List,然后将转换后的List全部添加到新的List中去,这是最高效的方法。
public static void main(String[] args) {
Integer[] arr = {1, 2, 3};
List<Integer> list = Arrays.asList(arr);
System.out.println(list);
List<Integer> newList = new ArrayList<>(arr.length);
Collections.addAll(newList, arr);
newList.add(4);
System.out.println(newList);
}
执行结果
[1, 2, 3]
[1, 2, 3, 4]
博客内容仅供自已学习以及学习过程的记录,如有侵权,请联系我删除,谢谢!