java.util.ConcurrentModificationException异常;java.util.Conc
发布时间:2020-12-15 01:58:52 所属栏目:Java 来源:网络整理
导读:写代码遇到这个问题,很多博客文章都是在反复的强调理论,而没有对应的实例,所以这里从实例出发,后研究理论: 一、错误产生情况 1 、字符型 ? ? (1)添加 public static void main(String[] args) { ListString stringList = new ArrayListString(); stringList.
写代码遇到这个问题,很多博客文章都是在反复的强调理论,而没有对应的实例,所以这里从实例出发,后研究理论: 一、错误产生情况 1 、字符型 ? ?(1)添加 public static void main(String[] args) { List<String> stringList = new ArrayList<String>(); stringList.add("张三毛"); stringList.add("李四"); stringList.add("王五"); stringList.add("钱二"); if (stringList!=null) { if (!stringList.equals(Collections.EMPTY_LIST.isEmpty())){ for (String s : stringList) { stringList.add("赵大"); } } } System.out.println(stringList); } 报错 改写为如下即可: 1 public static void main(String[] args) { 2 3 List<String> stringList = new ArrayList<String>(); 4 stringList.add("张三毛"); 5 stringList.add("李四"); 6 stringList.add("王五"); 7 stringList.add("钱二"); 8 9 if (stringList != null) { 10 if (!stringList.equals(Collections.EMPTY_LIST.isEmpty())) { 11 12 stringList.add("赵大"); 13 14 Iterator<String> it = stringList.iterator(); 15 while (it.hasNext()) { 16 it.next(); 17 } 18 } 19 } 20 21 System.out.println(stringList); 22 23 } 打印出结果: ? ? 然后我们打印其next,就会发现其循环就是通过it.next()方法将数据添加进去的 打印: ? (2)、删除 错误写法: 1 private static String key = "钱二"; 2 3 4 public static void main(String[] args) { 5 6 List<String> stringList = new ArrayList<String>(); 7 stringList.add("张三毛"); 8 stringList.add("李四"); 9 stringList.add("王五"); 10 stringList.add("钱二"); 11 12 if (stringList != null) { 13 if (!stringList.equals(Collections.EMPTY_LIST.isEmpty())) { 14 15 for (String s : stringList) { 16 if (key.equals(s)){ 17 stringList.remove(s); 18 } 19 } 20 } 21 } 22 23 System.out.println(stringList); 24 25 } 报错: 改写为: 1 private static String key = "钱二"; 2 3 4 public static void main(String[] args) { 5 6 List<String> stringList = new ArrayList<String>(); 7 stringList.add("张三毛"); 8 stringList.add("李四"); 9 stringList.add("王五"); 10 stringList.add("钱二"); 11 12 if (stringList != null) { 13 if (!stringList.equals(Collections.EMPTY_LIST.isEmpty())) { 14 Iterator<String> it = stringList.iterator(); 15 16 while (it.hasNext()) { 17 String next = it.next(); 18 19 if (key.equals(next)) { 20 it.remove(); 21 } 22 23 } 24 25 } 26 } 27 28 System.out.println(stringList); 29 30 } 结果: ? ? ? 2、整形 ? 正确添加: 1 public class ConcurrentBaseApplication { 2 3 private static String key = "钱二"; 4 5 6 public static void main(String[] args) { 7 8 List<Integer> integerList = new ArrayList<Integer>(); 9 integerList.add(1); 10 integerList.add(2); 11 integerList.add(3); 12 integerList.add(4); 13 14 Integer next=0; 15 16 if (integerList != null) { 17 if (!integerList.equals(Collections.EMPTY_LIST.isEmpty())) { 18 integerList.add(5); 19 20 Iterator<Integer> it = integerList.iterator(); 21 22 while (it.hasNext()) { 23 next = it.next(); 24 System.out.println(next); 25 } 26 27 } 28 } 29 30 System.out.println(integerList); 31 32 } 33 34 } 结果: 正确删除: 1 public class ConcurrentBaseApplication { 2 3 public static void main(String[] args) { 4 5 List<Integer> integerList = new ArrayList<Integer>(); 6 integerList.add(1); 7 integerList.add(2); 8 integerList.add(3); 9 integerList.add(4); 10 11 if (integerList != null) { 12 if (!integerList.equals(Collections.EMPTY_LIST.isEmpty())) { 13 14 Iterator<Integer> it = integerList.iterator(); 15 16 while (it.hasNext()) { 17 Integer next = it.next(); 18 if("2".equals(next.toString())){ 19 it.remove(); 20 } 21 } 22 } 23 } 24 25 System.out.println(integerList); 26 27 } 28 29 } ?结果: ?(3) 实体类 创建实体类 Student package com.north.big.penguin.pojo; import java.io.Serializable; /** * @author liuyangos8888 */ public class Student implements Serializable { /** * 姓名 */ private String name; /** * 年龄 */ private String age; /** * 标识 */ private String id; public Student() { } public Student(String name,String age,String id) { this.name = name; this.age = age; this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getId() { return id; } public void setId(String id) { this.id = id; } @Override public String toString() { return "Student{" + "name=‘" + name + ‘‘‘ + ",age=‘" + age + ‘‘‘ + ",id=‘" + id + ‘‘‘ + ‘}‘; } } 正确的添加: 1 public class ConcurrentBaseApplication { 2 3 public static void main(String[] args) { 4 5 List<Student> students = new ArrayList<Student>(); 6 7 Student student1 = new Student(); 8 student1.setName("李雷"); 9 student1.setAge("13"); 10 student1.setId(UUID.randomUUID().toString()); 11 12 Student student2 = new Student(); 13 student2.setName("韩梅梅"); 14 student2.setAge("14"); 15 student2.setId(UUID.randomUUID().toString()); 16 17 Student student3 = new Student(); 18 student3.setName("李华"); 19 student3.setAge("15"); 20 student3.setId(UUID.randomUUID().toString()); 21 22 23 students.add(student1); 24 students.add(student2); 25 students.add(student3); 26 27 if (students != null) { 28 if (!students.equals(Collections.EMPTY_LIST.isEmpty())) { 29 30 Student student4 = new Student(); 31 student4.setName("小明"); 32 student4.setAge("16"); 33 student4.setId(UUID.randomUUID().toString()); 34 35 36 Iterator<Student> it = students.iterator(); 37 38 while (it.hasNext()) { 39 // 添加学生 40 Student next = it.next(); 41 } 42 } 43 } 44 45 System.out.println(students); 46 47 } 48 49 } 结果: ? 正确的删除: 1 public class ConcurrentBaseApplication { 2 3 public static void main(String[] args) { 4 5 List<Student> students = new ArrayList<Student>(); 6 7 Student student1 = new Student(); 8 student1.setName("李雷"); 9 student1.setAge("13"); 10 student1.setId(UUID.randomUUID().toString()); 11 12 Student student2 = new Student(); 13 student2.setName("韩梅梅"); 14 student2.setAge("14"); 15 student2.setId(UUID.randomUUID().toString()); 16 17 Student student3 = new Student(); 18 student3.setName("李华"); 19 student3.setAge("15"); 20 student3.setId(UUID.randomUUID().toString()); 21 22 23 students.add(student1); 24 students.add(student2); 25 students.add(student3); 26 27 if (students != null) { 28 if (!students.equals(Collections.EMPTY_LIST.isEmpty())) { 29 30 Student student4 = new Student(); 31 student4.setName("小明"); 32 student4.setAge("16"); 33 student4.setId(UUID.randomUUID().toString()); 34 35 36 Iterator<Student> it = students.iterator(); 37 38 while (it.hasNext()) { 39 // 添加学生 40 Student next = it.next(); 41 42 Integer integerAge = Integer.valueOf(next.getAge()); 43 44 if(integerAge>14){ 45 it.remove(); 46 } 47 } 48 } 49 } 50 51 System.out.println(students); 52 53 } 54 55 } 结果: 结果集: 1 [Student{name=‘李雷‘,age=‘13‘,id=‘617e914f-ed33-472d-bbbd-1a6bf5ef5901‘},Student{name=‘韩梅梅‘,age=‘14‘,id=‘cb804e43-4846-4fc6-84c8-9e4a6b17d7f1‘}]
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |