为了账号安全,请及时绑定邮箱和手机立即绑定

对含有引用对象的set该怎么使用remove?

对含有引用对象的set该怎么使用remove?

千风千云 2015-12-22 16:19:24
代码如下,其他代码和老师的相同 public void testRemove(Student student) { String string = "数据结构"; for (Course cr : student.courses) { if(cr.name.equals(string)) {     student.courses.remove(cr)); } }我使用这个方法会报错,Exception in thread "main" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:922) at java.util.HashMap$KeyIterator.next(HashMap.java:956) at study.day1216.SetTest.testRemove(SetTest.java:60) at study.day1216.SetTest.main(SetTest.java:44)
查看完整描述

1 回答

已采纳
?
sxian_wang

TA贡献16条经验 获得超8个赞

在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。

解决办法:

  1. 使用Iterator来迭代,然后用iterator.remove();

  2. 用keySet()或entrySet(),然后得到直接得到这个对象,然后student.courses.remove();


查看完整回答
反对 回复 2015-12-22
  • 1 回答
  • 0 关注
  • 1241 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信