Java 數組和List操作的錯誤

Java 數組和List操作

    前幾天在工作的時候,發現了一個隱蔽的錯誤導致我的項目出現錯誤,找了好久,才找到這個問題,閒話不扯,看具體的代碼!
public void testArrayToList(){
		String res = "a,b,c,d,e,f,g,h";
		List<String> list = Arrays.asList(res.split(","));
		for(String temp:list){
			if(temp.equals("d")){
				list.remove(temp);
			}
		}
		
}
其實也想過用遍歷然後裝入容器的做法,解決這個問題,忽然腦子一熱,就使用這個API,沒成想這個居然出錯了,找了好久,終於找到這個出錯所在位置!
出錯信息如下:
java.lang.UnsupportedOperationException
原因是:
此處會拋出java.lang.UnsupportedOperationException異常,此方法返回的List不能add,remove對象,因爲該方法的實現是使用參數引用的數組的大小來new的一個ArrayList,對返回列表的更改會“直寫”到數組,而數組沒有add,remove方法。具體的實現方法可以看看底層的API。
但是可以轉化爲另一種方法,可不是遍歷的方法啊!
利用Collections的API進行轉換:
public void testArrayToList(){
	String res = "a,b,c,d,e,f,g,h";
	List<String> list = new ArrayList<String>();
	Collections.addAll(list,res.split(","));
}
轉化爲這種方式就可以使用add和remove方法!

-------路漫漫其修遠兮,吾將上下而求索!





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章