Java字符串数组转ArrayList集合抛Unsupporte
2019-01-09 本文已影响6人
菜菜___
想把一个字符串先切割为字符串数组,然后将数组转为ArrayList,但是在后面调用ArrayList的add方法时,却抛异常了。
代码如下:
public static void main(String[] args) {
String str = "A,B,C,D,E";
String arr[] = str.split(",");
List<String> arrList = Arrays.asList(arr);
arrList.add("F");
System.out.println("arrList:"+StringUtils.join(arrList,","));
}
异常信息:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
调用ArrayList的remove方法同样也会抛异常,原因如下:
Arrays.asList() 方法返回的是Arrays的内部类ArrayList, 而不是java.util.ArrayList。
Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList。
而remove、add等方法在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重写了这些方法,但是Arrays的内部类ArrayList没有重写,所以会抛出异常。
解决办法:
重新创建一个ArrayList来装结果集,将先前转换后的list放到新创建的ArrayList里
public static void main(String[] args) {
String str = "A,B,C,D,E";
String arr[] = str.split(",");
List<String> arrList = Arrays.asList(arr);
/*重新创建一个动态list来装结果集*/
List resultList = new ArrayList(arrList);
resultList.add("F");
System.out.println("arrList:"+StringUtils.join(resultList,","));
}
输出结果:
arrList:A,B,C,D,E,F
实际处理中,将字符串数组转换成ArrayList的方法有多种,这里只是记录一下这个异常的解决办法。
原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe
95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。