数组使用Arrays.asList()方法转换成list的坑

先上代码:

 String serial= "a,b,c";
 String[] ss = serial.split(",");
 List<String> list=Arrays.asList(ss);
 Iterator<String> iterator = list.iterator();
 while (iterator.hasNext()) {
          String s = iterator.next();
          if (number.equals(s)) {
                    iterator.remove();//使用迭代器的删除方法删除
              }
   }

这样运行到

iterator.remove();//使用迭代器的删除方法删除

就会报错,抛出异常。

正确写法:

​
 String serial= "a,b,c";
 String[] ss = serial.split(",");
 List<String> list=new ArrayList<>(Arrays.asList(ss));
 Iterator<String> iterator = list.iterator();
 while (iterator.hasNext()) {
          String s = iterator.next();
          if (number.equals(s)) {
                    iterator.remove();//使用迭代器的删除方法删除
              }
   }

​

就是:

List<String> list=new ArrayList<>(Arrays.asList(ss));

这一行要这样写,list才具有add()、remove()、clear()的功能。

原因:

这个ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList

它是Arrays类自己定义的一个静态内部类,这个内部类没有实现add()、remove()方法,而是直接使用它的父类AbstractList的相应方法。

而AbstractList中的add()和remove()是直接抛出java.lang.UnsupportedOperationException异常的!

public void add(int index, E element) { throw new UnsupportedOperationException();}

public E remove(int index) {throw new UnsupportedOperationException();}

所以:

List只是用来遍历,就用Arrays.asList()。

List要进行add()、remove()等操作,就要new一个java.util.ArrayList,然后进行后面的操作:

 

String[]  ss={"abc","def","xyz","aaaaaaaa","bbbb","abc"};  
List<String> list=new ArrayList<String>(Arrays.asList(ss));//按添加顺序显示
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值