用for-each 边遍历ArrayList 边修改时:

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
System.out.println(list); for (String s : list) {
if (s.equals("dd")) {
list.remove(s);
}
}
System.out.println(list);
}

会报错

可以改用如下方式:

① 用迭代器 iterator进行遍历删除

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
System.out.println(list); Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
if (next.equals("dd")) {
iterator.remove();
}
}
System.out.println(list);
}

②:使用最原始的 for循环

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
System.out.println(list); for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
if (s.equals("dd")) {
list.remove(s);
}
}
System.out.println(list);
}

③:采用jdk8 Collection中新增的方法removeIf (个人推荐,简洁快捷新特性)

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
System.out.println(list); list.removeIf(next -> next.equals("dd"));
System.out.println(list);
}

具体为什么ArrayList不能用 for-each循环去边遍历边删除,有大量科普文章解释,具体不再重复阐述,只记录方法,下面引用一篇个人觉得剖析很彻底的文章

链接

最新文章

  1. Spring in Action 学习笔记二-DI
  2. 内核控制Meta标签:让360浏览器默认使用极速模式打开网页(转)
  3. hyper-v虚拟化管理
  4. selenium-打开IE浏览器遇到问题记录
  5. hdoj-2021
  6. ubuntu知识收集
  7. C++中复制构造函数与重载赋值操作符总结
  8. 【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”
  9. HDU 4635 - Strongly connected(2013MUTC4-1004)(强连通分量)
  10. 拥抱模块化的JavaScript
  11. SQL Server Analysis Services 数据挖掘(1)
  12. centos 6.X 安装node
  13. 微信小程序开发工具 常用快捷键
  14. minicom与USB转串口
  15. UIImageView动画
  16. winPcap编程之获取适配器详细信息(三)
  17. TestNG并行测试
  18. jQuery选择器(基本过滤选择器)第三节
  19. Redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比
  20. Android Camera MSM HAL

热门文章

  1. (随手记)Javascript 的parseInt函数,在IE和非IE内核浏览器运行的不同结果
  2. Pandas系列(十八)- 多级索引
  3. vue使用npm安装sass
  4. 离线环境安装使用 Ansible
  5. SYCOJ4972的幂次方
  6. Python函数与lambda 表达式(匿名函数)
  7. 【pwn】攻防世界 pwn新手区wp
  8. Solon Web 开发,九、跨域处理
  9. 【C++】类-基础知识
  10. 安全检测服务如何帮助社交类App提升应用自身和用户个人安全