网站首页 > java教程 正文
那些年背过又忘记的Java面试题。List遍历快速和安全失败
①普通for循环遍历List删除指定元素
for(int i=0; i < list.size(); i++){
if(list.get(i) == 5)
list.remove(i);
}
② 迭代遍历,用list.remove(i)方法删除元素Iterator it = list.iterator()
while(it.hasNext()){
Integer value = it.next();
if(value == 5){
list.remove(value);
}}
③foreach遍历List删除元素
for(Integer i:list){
if(i==3) list.remove(i)
;}
fail—fast:快速失败当异常产生时,直接抛出异常,程序终止。fail-fast主要是体现在当我们在遍历集合元素的时候,经常会使用迭代器,但在迭代器遍历元素的过程中,
如果集合的结构(modCount)被改变的话,就会抛出异常ConcurrentModificationException,防止继续遍历。这就是所谓的快速失败机制。fail—safe:安全失败采用安全失败机制的集合容器,在遍历时不是直接在集合内容上访问的,而是先复制原有集合内容,在拷贝的集合上进行遍历。由于在遍历过程中对原集合所作的修改并不能被迭代器检测到,
所以不会触发ConcurrentModificationException。
缺点:基于拷贝内容的优点是避免了ConcurrentModificationException,但同样地,迭代器并不能访问到修改后的内容,即:迭代器遍历的是开始遍历那一刻拿到的集合拷贝,在遍历期间原集合发生的修改迭代器是不知道的。
场景:java.util.concurrent包下的容器都是安全失败,可以在多线程下并发使用,并发修改。
猜你喜欢
- 2024-09-08 2022最新Java基础面试题100题(2022最新电影西瓜天狼)
- 2024-09-08 105道Java面试题,认真思考对你面试很有价值
- 2024-09-08 Java面试170题全集!限时领取(含题目答案)!
- 2024-09-08 JAVA面试题:69道Spring面试题和答案
- 2024-09-08 字节跳动Java研发面试99题(含答案):JVM+Spring+MySQL+线程池+锁
- 2024-09-08 扣丁学堂分享Java笔试题大全(扣丁学堂分享java笔试题大全及答案)
- 2024-09-08 Javaweb笔试题及机试题(附答案)(javaweb面试题目整理)
- 2024-09-08 分享java50道基础面试题(有答案)(50道javascript基础面试题附答案)
- 2024-09-08 2022 Java面试题大全1000面试题附答案详解,最全面详细,看完稳了
- 2024-09-08 干货来了!| 125 条常见的 java 面试笔试题大汇总 |(50/125)| 日更
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)