在Android上ConcurrentModificationException使用时如何避免ArrayList?
有人可以给出基本的经验法则来避免它吗?
迭代你的arraylist时不添加/删除元素.
在迭代时修改列表时,此代码将抛出ConcurrentModificationException.
List<String> al = new ArrayList<String>();
al.add("2");
for(String s: al) {
al.remove("2");
}
Run Code Online (Sandbox Code Playgroud)
此代码不会抛出ConcurrentModificationException.
List<String> al = new Arraylist<String>();
Iterator<String> itr = al.iterator();
while(itr.hasNext()){
itr.next();
itr.remove();
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用一些类的从java.util.concurrent的包,如java.util.concurrent.CopyOnWriteArrayList中这不会抛出ConcurrentModificationException,当你修改而迭代名单:
CopyOnWriteArrayList<String> al = new CopyOnWriteArrayList<String>();
al.add("2");
Iterator<String> itr = al.iterator();
while(itr.hasNext()){
itr.next();
al.add("3");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1185 次 |
| 最近记录: |