2
由Maurice Naftalin,Philip Wadler研究Java泛型和集合書,我離開CopyOnWriteArraySet部分,在嘗試練習的同時學習使其堅持我的想法,但是我遇到了一個問題,讓我泄露我的瑣碎代碼:在修改CopyOnWriteArraySet時得到了UnsupportedOperationException
CopyOnWriteArrayList<Character> modifiableSet = new CopyOnWriteArrayList<Character>();
modifiableSet.add('a');modifiableSet.add('d');
for(Character ch:modifiableSet){
if(ch.equals('d')){
modifiableSet.remove(ch); // compiler neglects this, as expected,
// since CopyOnWriteArraySet is synchronous
}
}
for(Iterator<Character> its = modifiableSet.iterator();its.hasNext();){
Character firstElement = its.next();
if(firstElement.equals('a'))its.remove();// compiler does not give a damn here
// since CopyOnWriteArrayList is synchronous java.lang.UnsupportedOperationException
// surprisingly, wondering If CopyOnWriteArrayList is synchronous,
// why the compiler shouts here ?
}
我我的大腦瞭解,到目前爲止,無論何時修改恰好CopyOnWriteArraySet
,有了新的變化創造了一個新的支持數組,問題是,是否通過CopyOnWriteArraySet
通過iterator()
會發生在後盾陣列或前陣列,如果說前陣列很方便,這聽起來很合理CopyOnWriteArraySet.remove()
在前面陣列上工作,而CopyOnWriteArraySet.iterator().remove()
在後面陣列上工作,對不對?任何閃光燈投入這個遠遠讚賞,謝謝大家。
是有道理的,謝謝你清理那個。 – Rehme
任何替代雖然? – Snicolas