当前位置: 首页 > news >正文

第十二节:第七部分:集合框架:Collection集合的使用总结、集合的并发修改异常问题

Collection集合的使用总结

Collection集合的使用总结

集合的并发修改异常

集合的并发修改异常

代码:

package com.itheima.day21_Collection_exception;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;//目标:理解集合的并发修改异常问题,并解决
public class CollectionTest {public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("王麻子");list.add("小李子");list.add("李爱花");list.add("张全蛋");list.add("晓李");list.add("李玉刚");System.out.println(list);//[王麻子, 小李子, 李爱花, 张全蛋, 晓李, 李玉刚]//需求:找出集合中全部带“李”的名字,并从集合中删除。// 使用for循环遍历集合并删除集合中带李字的名字//[王麻子, 小李子, 李爱花, 张全蛋, 晓李, 李玉刚]//[王麻子, 李爱花, 张全蛋, 李玉刚]
//        for (int i = 0; i < list.size(); i++) {
//            String name = list.get(i);
//            if (name.contains("李")){
//                list.remove(name);
//            }
//        }
//        System.out.println(list);//[王麻子, 李爱花, 张全蛋, 李玉刚]System.out.println("====================================");// 怎么解决呢?// 使用for循环遍历集合并删除集合中带李字的名字//[王麻子, 小李子, 李爱花, 张全蛋, 晓李, 李玉刚]//[王麻子, 张全蛋]
//        for (int i = 0; i < list.size(); i++) {
//            String name = list.get(i);
//            if (name.contains("李")){
//                list.remove(name);
//                i--;
//            }
//        }// 倒着去删除也是可以的。
//        System.out.println(list);//需求:找出集合中全部带“李”的名字,并从集合中删除。// 注意不能使用增强for循环遍历集合并删除数据,没有办法解决bug,因为它是迭代器简化写法,没办法获得迭代器,因此无法使用迭代器的remove方法Iterator<String> it = list.iterator();while (it.hasNext()) {String name = it.next();if (name.contains("李")){//list.remove(name);//并发修改异常的错误。it.remove();// 删除迭代器当前遍历到的数据,每删除一个数据后,相当于也在底层做了i--}}System.out.println(list);}
}

结果

http://www.xdnf.cn/news/788527.html

相关文章:

  • 计算机图形学 - 投影变换推导
  • qwen大模型在进行词嵌入向量时,针对的词表中的唯一数字还是其他的?
  • NX890NX894美光固态闪存NX906NX908
  • 6级阅读学习
  • 九(5).引用和指针的区别
  • 关于 java:6. 反射机制
  • 倚光科技:Zernike自由曲面转菲涅尔,反射镜及透镜加工技术革新
  • 2023年12月四级真题Reading Comprehension的分析总结
  • Day11
  • 企业级高防CDN选型指南
  • 数字乡村治理整体解决方案
  • U盘挂载Linux
  • 如何判断是否为“循环链表“
  • Python数据分析及可视化中常用的6个库及函数(二)
  • 腾讯云国际版和国内版账户通用吗?一样吗?为什么?
  • Eureka 高可用集群搭建实战:服务注册与发现的底层原理与避坑指南
  • Redis中的fork操作
  • impala中更改公网ip为内网ip
  • CLion社区免费后,使用CLion开发STM32相关工具资源汇总与入门教程
  • “刹车思维”:慢,是为了更快
  • 超临界二氧化碳再热再压缩布雷顿循环建模与先进控制
  • CppCon 2014 学习:Wishful Thinking
  • Gitee Wiki:重塑关键领域软件研发的知识管理范式
  • Android Kotlin 算法详解:链表相关
  • 关于线缆行业设备数据采集异构问题的解决
  • D2-基于本地Ollama模型的多轮问答系统
  • [蓝桥杯]最大化股票交易的利润
  • HarmonyOS图片image使用
  • linux的实时性
  • python第31天打卡