如何正确的将数组转换为ArrayList?

1.直接使用Arrays.asList()

Integer [] myArray = { 1, 2, 3 };
List<Integer> myList= Arrays.asList(myArray);
myList.add(4);//运行时报错:UnsupportedOperationException
myList.remove(1);//运行时报错:UnsupportedOperationException
myList.clear();//运行时报错:UnsupportedOperationException

使用集合的修改方法:add()、remove()、clear()会抛出异常。

2.最简便的方法(推荐)

Integer [] myArray = { 1, 2, 3 };
ArrayList<Integer> myList= new ArrayList<>(Arrays.asList(myArray)); // [1, 2, 3]
myList.add(4); // [1, 2, 3 ,4]
myList.remove(1);// [1, 3 ,4]
myList.clear();// []

会发现程序正常运行,并没有抛出异常

Integer [] myArray = { 1, 2, 3 };
List<Integer> myList= Arrays.asList(myArray);
myList.getClass(); // java.util.Arrays$ArrayList

Arrays.asList() 方法返回的并不是 java.util.ArrayList ,而是 java.util.Arrays 的一个内部类,这个内部类并没有实现集合的修改方法或者说并没有重写这些方法。

Integer [] myArray = { 1, 2, 3 };
ArrayList<Integer> myList= new ArrayList<>(Arrays.asList(myArray)); // [1, 2, 3]
myList.getClass(); // java.util.ArrayList

而这种方法则返回的是 java.util.ArrayList ,也就不难理解了

3.使用 Java8 的Stream(推荐)

Integer [] myArray = { 1, 2, 3 };
List<Integer> collect = Arrays.stream(myArray).collect(Collectors.toList()); // [1, 2, 3]
collect .getClass()  // java.util.ArrayList

使用Java8 的Stream这种方法则返回的也是 java.util.ArrayList

4.使用 Java9 的 List.of()方法

Integer[] array = {1, 2, 3};
List<Integer> list = List.of(array);  // [1, 2, 3]
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值