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