2014-01-25 35 views
0

我想設置successList爲[10,14]什麼,我試圖,的removeAll從列表原因java.lang.UnsupportedOperationException

String oneStr = "10,11,12,14"; 
String twoStr = "11,14"; 

Returns r = new Returns(); 

r.setFailureList(Arrays.asList(twoStr.split(","))); 
r.setSuccessList(Arrays.asList(oneStr.split(","))); 

r.getSuccessList().removeAll(r.getFailureList()); 
System.out.println(r.getSuccessList()); 

收益類是,

List<String> successList; 
List<String> failureList; 


public List<String> getSuccessList() { 
    return successList; 
} 
public void setSuccessList(List<String> successList) { 
    this.successList = successList; 
} 
public List<String> getFailureList() { 
    return failureList; 
} 
public void setFailureList(List<String> failureList) { 
    this.failureList = failureList; 
} 
public void setFailureList(ArrayList<String> failureList) { 
    this.failureList = failureList; 
} 

,並導致java.lang.UnsupportedOperationException堆棧跟蹤是,

Exception in thread "main" java.lang.UnsupportedOperationException 
    at java.util.AbstractList.remove(Unknown Source) 
    at java.util.AbstractList$Itr.remove(Unknown Source) 
    at java.util.AbstractCollection.removeAll(Unknown Source) 
+1

難道這是因爲你得到的成功名單是一個不可修改的列表,如http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Collections.html#unmodifiableList(java。 util.List) –

+1

@KarthikKalyanasundaram哦。 「在明顯的地方通過文件回答」。刪除我的upvote。這仍然是一個很好的問題,不值得讚揚國際海事組織。 –

+1

@JanDvorak我沒有做downvote :) –

回答

6

asList()

文檔返回由指定數組支持的固定大小的列表。

所以,當你直接修改(添加,刪除..等)到那個,你最終與exception

左右,但在案件

new ArrayList<String>(Arrays.asList(twoStr.split(","))) 

在這裏,你是不是指list直接。您正在創建新的ArrayList並使用Arrays.as.asList(twoStr.split(","))返回的列表的數據,而不是Unmodifiable(按大小)。

+0

sᴜʀᴇsʜᴀᴛᴛᴀ - ThankZ For Ur AnsweR .. –

0

變化

r.setFailureList(Arrays.asList(twoStr.split(","))); 
r.setSuccessList(Arrays.asList(oneStr.split(","))); 

作爲

r.setFailureList(new ArrayList<String>(Arrays.asList(twoStr.split(",")))); 
r.setSuccessList(new ArrayList<String>(Arrays.asList(oneStr.split(",")))); 
+1

'new ArrayList (twoStr.split(「,」))'? –

相關問題