0
点赞
收藏
分享

微信扫一扫

Java数组转List的方式

IT影子 2021-10-15 阅读 187
技术分享
方式一

通过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]
举报

相关推荐

0 条评论