开发者社区> 问答> 正文

能不能在Java的foreach 循环里进行元素的 remove/add 操作?

能不能在Java的foreach 循环里进行元素的 remove/add 操作?

展开
收起
鲁花花生油 2021-10-12 17:18:54 921 0
1 条回答
写回答
取消 提交回答
  • 不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。

    正例:

    Iterator iterator = list.iterator();

    while (iterator.hasNext()) {

    String item = iterator.next();

    if (删除元素的条件) {

    iterator.remove();

    }

    }

    反例:

    List list = new ArrayList ();

    list.add("1");

    list.add("2");

    for (String item : list) {

    if ("1".equals(item)) {

    list.remove(item);

    }

    }

    说明:以上代码的执行结果肯定会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的结果吗?

    资料来源:电子书《阿里巴巴Java开发手册》,下载链接:https://developer.aliyun.com/topic/download?id=1092

    2021-10-12 17:20:35
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载