字符串数组转成list的三种⽅案
str = "google";
//第⼀种:将字符串⽤split转成String数组,⽤Collections的addAll⽅法添加全部元素到list;
String[] arr = str.split("");
ArrayList<String> list3 = new ArrayList<String>();
Collections.addAll(list3, arr);
//第⼆种,Arrays.asList();
//这种⽅法只能返回⼀个视图,不能操作,只能查看
List<String> list4 = new ArrayList<String>();
list4 = Arrays.asList(arr);
//第⼆种的解决⽅案
List<String> list5 = new ArrayList<String>(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<String> list = Arrays.asList(array);
List arrList = new ArrayList(list);
arrList.add("6");
数组转换成字符串}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。