初学安卓开发,菜鸟阶段,看黑马视频里的谷歌电子市场里的BaseActivity里通过一个LinkedList去管理了所有的activity。在集合中移除activity时这样写到
public void killAll() {
List<BaseActivity> copy;
synchronized (mActivities) {
copy = new LinkedList<BaseActivity>(mActivities);
}
for (BaseActivity activity : copy) {
activity.finish();
}
android.os.Process.killProcess(android.os.Process.myPid());
}
老师说集合遍历的过程中不能移除元素,然后就复制了一份BaseActivity去遍历移除它,个人还是不太明白原理,就看了很多别人的博客,于是就写了我的第一篇博客,觉得学习要养成良好习惯,记录下这些辛苦获取的经验,也方便以后自己复习和供别人参考。
java中集合在遍历的过程中移除元素会报异常,具体如下:
List<Integer> list = new
ArrayList<Integer>();
11 |
for (Integer value : list) {
|
15 |
System.out.println(value);
|
16 |
}
想要移除集合中值为2的元素 会报错,此时会有一个笨的方法解决它,就是再写个list在遍历的过程中判断如果值为2就加入该list中,然后在外面去遍历这个新的list去移除所有list.removeAll();这个思想也正是上面老师写的那个代码,但是有更好的方法就是 采用集合中的迭代器方法去做移除操作,会变得简单方便不报错,具体: Iterator<Integer> it = list.iterator();
13 |
Integer value = it.next();
|
17 |
System.out.println(value);
|
感觉集合元素的移除用集合本身的迭代器去做更好
-
|