基础大杂烩 -- 目录

大杂烩 -- Java中Iterator的fast-fail分析

大杂烩 -- Iterator 和 Iterable 区别和联系

问题: 
在集合中,判断里面有没有"Hello"这个元素,如果有,我就添加一个"It's me"元素。

使用普通迭代器出现的异常: 
ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。

产生的原因: 
迭代器是依赖于集合而存在的,在判断成功后,集合的中新添加了元素,而迭代器却不知道,所以就报错了,这个错叫并发修改异常。 
其实这个问题描述的是:普通迭代器遍历元素的时候,通过集合是不能修改元素的。

解决: 
A:迭代器迭代元素,迭代器修改元素 
   元素是跟在刚才迭代的元素后面的。 
B:集合遍历元素,集合修改元素(普通for循环进行遍历,forEach依旧是基于迭代器) 
   元素是在最后添加的。

package limeMianShi.iterator_;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator; public class It_modify_for_modify { public static void main(String[] args) {
List<String> forStyle = new ArrayList<String>();
List<String> iteratorStyle = new ArrayList<String>(); Iterator<String> iterator = null; forStyle.add("Hello");
forStyle.add("World");
iteratorStyle.add("Hello");
iteratorStyle.add("World");
System.out.print("forStyle---\t");
for (int i = 0; i < forStyle.size(); i++) {
if ("Hello".equals(forStyle.get(i)))
forStyle.add("It's me");
}
iterator = forStyle.iterator();
while (iterator.hasNext())
System.out.print(iterator.next() + " ");
System.out.println(); System.out.print("iteratorStyle---\t");
ListIterator<String> listIterator = iteratorStyle.listIterator();
while (listIterator.hasNext()) {
if ("Hello".equals(listIterator.next()))
listIterator.add("It's me");
}
iterator = iteratorStyle.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
}
}

原理分析:

  啦啦啦

大杂烩 -- Iterator 并发修改异常ConcurrentModificationException的更多相关文章

  1. 理解和解决Java并发修改异常ConcurrentModificationException(转载)

    原文地址:https://www.jianshu.com/p/f3f6b12330c1 理解和解决Java并发修改异常ConcurrentModificationException 不知读者在Java ...

  2. 集合框架之——迭代器并发修改异常ConcurrentModificationException

    问题: 我有一个集合,如下,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现. 使用普通迭代器出现的异常: ...

  3. 理解和解决Java并发修改异常:ConcurrentModificationException

    參考文獻:https://www.jianshu.com/p/f3f6b12330c1 文獻来源:简书 关键字: Java Exception遇到异常信息Exception in thread &qu ...

  4. 并发修改异常ConcurrentModificationException

    1.简述:在使用 迭代器对象遍历集合时,使用集合对象修改集合中的元素导致出现异常 public static void main(String[] args) { List<Integer> ...

  5. ConcurrentModificationException(并发修改异常)的解决

    [异常解释] ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常.[产生的原因] 迭代器是依赖于集合而存在的,在判断成功后,集合 ...

  6. 并发修改异常(ConcurrentModificationException)

    并发修改异常(ConcurrentModificationException) 这个异常,使用集合的时候应该很常见,这个异常产生的原因是因为java中不允许直接修改集合的结构. 先贴上个有趣的例子,给 ...

  7. ConcurrentModificationException 集合并发修改异常 解决

    import java.util.ArrayList; import java.util.List; import java.util.ListIterator; /** * 问题? * 有一个集合, ...

  8. 详解 迭代器 —— Iterator接口、 ListIterator接口 与 并发修改异常

    (请关注 本人"Collection集合"博文--<详解 Collection集合>) Iterator接口(迭代器): 概述: 对 collection 进行迭代的迭 ...

  9. java 15 - 8 集合框架(并发修改异常的产生原因以及解决方案)

    问题?   我有一个集合,如下,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现.  面试题: Concu ...

随机推荐

  1. window 10系统怎样手动更改电脑的时间

    win10系统的电脑显示时间默认的是自动网络校时,也就是电脑的时间跟网络时间同步,那么win10系统怎样手动更改电脑时间呢? 点击电脑左下方的win图标,找到菜单里的[设置] 点击菜单里的[设置],弹 ...

  2. java知识思维图解

  3. [Android Pro] 完美解决 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

    原文:https://blog.csdn.net/qq_24118527/article/details/82867864

  4. ES6 js中const,var,let区别 今天第一次遇到const定义的变量

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...

  5. 全排列(Perm)的递归实现算法

    https://blog.csdn.net/zhi_jin/article/details/69267230 什么是全排列] 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个 ...

  6. cygwin下切换到其他磁盘

    转自:https://blog.csdn.net/lts_cxl/article/details/17248727 cygwin安装之后,无法直接访问e,c,d等盘的目录.  运行df -h 命令,发 ...

  7. [C++] const与重载

    下面的两个函数构成重载吗? void M(int a){} //(1) void M(const int a){} //(2) 下面的呢? void M(int& a){} //(3) voi ...

  8. stingray中使用angularjs

    引入angularjs 手动启用angularjs 不使用ng-app, 在所有模块和controller定义后挂载启用angularjs function OnLoad() { scroll(0, ...

  9. Java Arrays.sort源代码解析

    前提: 当用到scala的sortWith,发现: def sortWith(lt: (A, A) ⇒ Boolean): List[A] // A为列表元素类型 根据指定比较函数lt进行排序,且排序 ...

  10. android 获得View的高度

      在一个activity中有一个textview,设置字数不同,如何能在打开这个activity时就及时获得这个textview在activity的高度,有利于我对textview的高度进行设置. ...