字符串数组转成list的三种方案

str = "google";
//第一种:将字符串用split转成String数组,用Collections的addAll方法添加全部元素到list;
String[] arr = str.split("");
ArrayList list3 = new ArrayList();
Collections.addAll(list3, arr);//第二种,Arrays.asList();
//这种方法只能返回一个视图,不能操作,只能查看
List list4 = new ArrayList();
list4 = Arrays.asList(arr);
//第二种的解决方案
List list5 = new ArrayList(Arrays.asList(arr));

 

第二种方法行不通的原因:

在项目中对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,通过看源码发现问题,并写测试程序如下。 

发生问题的原因如下: 
调用Arrays.asList()生产的List的add、remove方法时报异常,Arrays.asList() 返回Arrays的内部类ArrayList, 而不是java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。

敲黑板!!

java.util.ArrayList重写了这些方法而Arrays的内部类ArrayList没有重写,所以会抛出异常。解决方法如下:

public class ListTest {public static void main(String[] args) {String[] array = {"1","2","3","4","5"};List list = Arrays.asList(array);List arrList = new ArrayList(list);arrList.add("6");}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部