安卓谷歌电子市场学习笔记系列——怎么移除集合中的元素(迭代器的使用)

初学安卓开发,菜鸟阶段,看黑马视频里的谷歌电子市场里的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 = newArrayList<Integer>();

5        list.add(1);
6        list.add(2);
7        list.add(2);
8        list.add(3);
9        list.add(4);
10
11        for(Integer value : list) {
12            if(2== value) {
13                list.remove(value);
14            }
15            System.out.println(value);
16

        }

想要移除集合中值为2的元素 会报错,此时会有一个笨的方法解决它,就是再写个list在遍历的过程中判断如果值为2就加入该list中,然后在外面去遍历这个新的list去移除所有list.removeAll();这个思想也正是上面老师写的那个代码,但是有更好的方法就是 采用集合中的迭代器方法去做移除操作,会变得简单方便不报错,具体:

Iterator<Integer> it = list.iterator();

12        while(it.hasNext()) {
13            Integer value = it.next();
14            if(2== value) {
15                it.remove();
16            }
17            System.out.println(value);
18        }

感觉集合元素的移除用集合本身的迭代器去做更好



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值