import java.util.ArrayList; import java.util.Iterator; import java.util.List; //并发修改异常 /* 我有一个集合 List<String> s = new ArrayList<>(); 里面有三个元素 s.add("hello"); s.add("world"); s.add("he"); 遍历集合,得到每一个元素,看看有没有world这个元素,如果有添加一个"javaee"元素 */ public class E8 { public static void main(String[] args) { //1.创建集合对象 List<String> s = new ArrayList<>(); //2.添加值 s.add("hello"); s.add("world"); s.add("he"); //3.遍历集合,得到每一个元素,看看有没有world这个元素,如果有添加一个"javaee"元素 /*Iterator<String> it = s.iterator(); while(it.hasNext()){ String t = it.next(); if(t.equals("world")){ s.add("javaee"); } } */ /* ConcurrentModificationException 预期修改次数与实际修改次数不同 迭代器中的it.next()方法进行了一个操作 来判断 预期修改次数与实际修改次数 当执行 s.add("javaee");源码中实际修改次数加一 而预期修改次数不变,如果预期修改次数与实际修改次数不同则会抛出异常 总的来说:当使用迭代器的时候不要添加数据 用另一种方法 */ //4.遍历集合,得到每一个元素,看看有没有world这个元素,如果有添加一个"javaee"元素 for (int i = 0; i < s.size(); i++) { String name = s.get(i); if(name.equals("world")){ s.add("javazz"); } } System.out.println(s); //[hello, world, he, javazz] } }
2021-03-15 18:55:04