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]

博客内容仅供自已学习以及学习过程的记录,如有侵权,请联系我删除,谢谢!

上一篇 下一篇

猜你喜欢

热点阅读