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

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遍历均不能解决并发修改异常问题,因此增它们只适合做数据的遍历,不适合同时做增删操作,

http://www.lryc.cn/news/2391949.html

相关文章:

  • Taro on Harmony C-API 版本正式开源
  • 知识隔离的视觉-语言-动作模型:训练更快、运行更快、泛化更好
  • [ARM][架构] 02.AArch32 程序状态
  • Dockerfile正确写法之现代容器化构建的最佳实践
  • React---day4
  • ArkUI(方舟UI框架)介绍
  • 【Bug】定时任务中 Jpa Save 方法失效
  • 英语科研词汇现象及语言演变探讨
  • C# 打印PDF的常用方法
  • 若依微服务的定制化服务
  • Axios 如何通过配置实现通过接口请求下载文件
  • 小表驱动大表更快吗,不是
  • 20250529-C#知识:运算符重载
  • 【HW系列】—目录扫描、口令爆破、远程RCE流量特征
  • 如何在WordPress网站中添加相册/画廊
  • 【NLP基础知识系列课程-Tokenizer的前世今生第一课】Tokenizer 是什么?为什么重要?
  • Codeforces Round 1025 (Div. 2)
  • Ubuntu20.04操作系统ssh开启oot账户登录
  • 类欧几里得算法(floor_sum)
  • 每日Prompt:卵石拼画
  • 湖北理元理律师事务所观察:债务优化如何成为民生安全网
  • AI时代新词-机器学习即服务(MLaaS)
  • 设计模式简述(二十)规格模式
  • 符合Python风格的对象(覆盖类属性)
  • 题目 3314: 蓝桥杯2025年第十六届省赛真题-魔法科考试
  • Java八股-Java优缺点,跨平台,jdk、jre、jvm关系,解释和编译
  • linux 内核态和用户态定时器函数使用总结
  • 支持selenium的chrome driver更新到136.0.7103.113
  • 硬件服务器基础
  • LVS的DR模式部署