删除宠物猫信息问题
来源:3-12 删除宠物猫信息
透明度88
2017-06-22 09:17:12
package com.imooc.cat; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class CatTast { public static void main(String[] args) { // 定义宠物猫对象 Cat huahua = new Cat("花花", 12, "英国短毛猫"); Cat fanfan = new Cat("凡凡", 6, "中华田园猫"); Set<Cat> set = new HashSet<Cat>(); set.add(huahua); set.add(fanfan); // 显示宠物猫信息 Iterator<Cat> it = set.iterator();// <Cat>泛型,就不用强制类型转换 System.out.println("宠物猫的信息:"); while (it.hasNext()) { System.out.println(it.next()); } // 再添加一个与花花同样属性的对象 Cat huahua1 = new Cat("花花", 12, "英国短毛猫"); set.add(huahua1); System.out.println("****************************"); it = set.iterator(); System.out.println("添加重复宠物猫的信息:"); while (it.hasNext()) { System.out.println(it.next()); } // 重新插入新宠物猫信息 Cat huahua2 = new Cat("花花2", 2, "英国短毛猫"); set.add(huahua2); System.out.println("****************************"); it = set.iterator(); System.out.println("添加花花2的信息:"); while (it.hasNext()) { System.out.println(it.next()); } // 在集合中用对象查找花花的信息并输出 System.out.println("****************************"); if (set.contains(huahua)) { System.out.println("花花找到了"); System.out.println(huahua); } else System.out.println("没找到"); // 在集合中用名字查找花花的信息并输出 System.out.println("****************************"); System.out.println("通过名字找花花信息"); it = set.iterator(); Cat c = null; boolean flag = false; while (it.hasNext()) { c = it.next(); if (c.getName().equals("花花")) { flag = true; break; } } if (flag) { System.out.println("花花找到了"); System.out.println(c); } else System.out.println("花花没找到"); System.out.println("****************************"); // 删除花花2并重新输出 //it = set.iterator(); for (Cat cat : set) { if ("花花2".equals(cat.getName())) { set.remove(cat); } } System.out.println("删除2后的数据"); for (Cat cat : set) { System.out.println(cat); } } }
为什么会出现这样的异常错误
2回答
这个异常时由于在循环中进行remove()方法调用引起的,处理的方式就是调用完remove()方法后,程序不要再继续往下遍历了,调用break;语句跳出循环,就没有问题了。这个属于集合设计的问题,不允许删除后再进行循环遍历集合。祝学习愉快!
透明度88
提问者
2017-06-22
这个异常
相似问题