1.废话不多说,先上代码:
List<String> list=new ArrayList<String>(); List list2= Arrays.asList("1","2","s","a"); list.addAll(list2); System.out.println(list.toArray()); //结果:[Ljava.lang.Object;@4554617c System.out.println(list.toString()); //结果:[1, 2, s, a] System.out.println(list.contains("s")); //返回true list.add("8"); System.out.println(list.toString()); System.out.println( list.containsAll(list2)); //是否包含list2:true list2.clear(); list2=Arrays.asList("1","2","s"); System.out.println( list.containsAll(list2)); //是否包含list2:true
在运行后发现:
发生问题的原因如下:
调用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没有重新,所以会抛出异常。
所以我要想再次使用clear方法,可以使用 list2=null;改变其引用。
就不会报错。
结果如下: