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

Collection集合遍历的三种方法

1.foreach循环遍历

格式:for(元素的数据类型 变量名:数组或集合){

}

2.使用迭代器遍历

方法名称:Iterator<E> iterator()

说明:返回集合中的迭代器对象,该迭代器对象默认指向当前集合的第一个元素。

示例:

List<String> list = new ArrayList<>();list.add("王");list.add("小");list.add("王");list.add("小");Iterator iterator = list.iterator();while (iterator.hasNext()){System.out.print(iterator.next());}

迭代器初始在集合的第一个元素,while循环判断条件为当前元素是否为空,打印时的.next()是将索引遍历到下一个元素。

3.Lambda表达式

方法名称:default void forEach(Consumer<? super T> action)  

说明:结合lambda遍历集合

 Set<String> set = new HashSet<>();set.add("王");set.add("小");set.add("王");set.add("小");//用Lambda表达式遍历setset.forEach (new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}});

4.认识并发修改异常问题

遍历集合的同时又存在增删集合元素的行为时可能出现业务异常,这种现象称为并发修改异常问题。

图中通过for循环删除包含枸杞的元素,但是没有删除干净,就是发生了并发修改异常问题

原因是,当for循环中的索引i在第一个元素时,该元素不包含枸杞,i++,索引遍历至第二个元素,第二个元素包含枸杞,删除,i++,索引遍历至第三个元素,但此时红枸杞元素会因黑枸杞的删除而前移,至第二个元素,所以红枸杞未判断,没有删除。

解决并发修改异常问题的方案
① 如果集合支持索引,可以使用for循环遍历,每删除数据后做i--;或者可以倒着遍历
②)可以使用迭代器遍历,并用迭代器提供的删除方法删除数据。

注意:增强for循环/Lambda遍历均不能解决并发修改异常问题,因此增它们只适合做数据的遍历,不适合同时做增删操作,

相关文章:

  • 大模型应用开发之RAG
  • leetcode106.从中序与后序遍历序列构造二叉树:索引定位与递归分治的完美配合
  • 网络 :序列和反序列化
  • 使用Docker Compose部署Dify
  • Linux `|` 管道操作符深度解析与高阶应用指南
  • SOC-ESP32S3部分:12-2、编码器驱动
  • ae卡通打架烟雾特效
  • 梯度下降 损失景观 视频截图
  • 第十八章:数据治理之数据质量:“数据质量”不仅仅和“数据质量”有关
  • 在train和eval模式下性能差距的问题(本文聚焦于BatchNorm2d)
  • 指针数组和数组指针的区别
  • ssm-ham项目1
  • 人工智能赋能教育:重塑学习生态,开启智慧未来
  • 小白的进阶之路系列之四----人工智能从初步到精通pytorch自定义数据集上
  • day36 python神经网络训练
  • 【LLM】LLM源码阅读与分析工具DeepWiki项目
  • Qt环境的搭建
  • NextJS 项目,编译成功,但是启动失败的解决方案
  • Docker镜像存储路径迁移指南(解决磁盘空间不足问题)
  • 嵌入式学习笔记——day27
  • 网络营销主要干什么/谷歌官方seo入门指南
  • 临沂网站制作哪家靠谱/如何注册一个平台
  • 做网站运营需要学什么软件/关键词优化seo公司
  • 怎么做网站弄网盟/海南百度推广公司有哪些
  • wordpress建立公司网站/百度搜索关键词数据
  • 网站建设系统怎么样/上海seo网站策划