在使用JDK的工具类Arrays.asList()方法把数组转化为集合的时候,对转化后的集合对象不能使用修改集合的相关方法,如果调用转化之后的集合对象的add() remove() clear()的这些方法会抛出UnsupportedOperationException异常。
原因:Arrays.asList()返回的集合对象的类型为Arrays工具类的内部类并没有像ArrayList、LinkedList这些具体的集合实现类一样实现add() remove() clear()这些方法。Arrays.asList()体现的是适配器模式,适配器的数据源仍然是数组。
String[] strArray=new String[]{"a", "b", "c"};
List strList= Arrays.asList(strArray);
System.out.println(strList);//输出 a,b,c
strList.add("d");//报错,抛出UnsupportedOperationException异常
strArray[0]="d";
System.out.println(strList);//输出d,b,c