读书人

java 集合容易犯的异常

发布时间: 2012-12-21 12:03:49 作者: rapoo

java 集合容易犯的错误

?

? String[] ss=new String[]{"a","b"};?

?List<String> list= Arrays.asList(ss);

?list.add("dd");

?for(String s:list)

?{

?System.out.println(s);

?}

这段代码 会抛出

?

Exception in thread "main" java.lang.UnsupportedOperationException

?

原因是asList返回的不是一个我们常用的ArrayList,只是一个内部类。

仅仅是把一个数组以List的现实表示,内部还是一个数组,还是仅仅有数组

的一些功能。

?

add的方法就直接抛出异常了。。

?

?

asList的作用只是为了 方便使用。

?

底层仍然是一个数组,保持数组能拥有的所有操作。?
比如修改某一个元素,或者遍历。?
但是不能够改变长度。?
只是以List形态出现,为了某些仅对List读操作的方法可以顺利的执行。

?

?

?

可以用这种方式去实现

?

? String[] ss=new String[]{"a","b"};?

??List<String> list=new ArrayList<String>();

? ? ? ? ? list.addAllI(?Arrays.asList(ss););

?

??list.add("dd");

??for(String s:list)

??{

??System.out.println(s);

??}

?

?

还有就是 数组不可以强制转换

?Object[] ?os=new Object[]{"a","b"};

?String[] ?ss=(String[]) os;

这样也会报错:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

at com.sunline.flow.ide.project.navigator.Test.main(Test.java:42)

?

读书人网 >编程

热点推荐