猿问

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

代码如下,其他代码和老师的相同

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)



千风千云
浏览 1266回答 1
1回答

sxian_wang

在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。解决办法:使用Iterator来迭代,然后用iterator.remove();用keySet()或entrySet(),然后得到直接得到这个对象,然后student.courses.remove();
随时随地看视频慕课网APP

相关分类

Java
我要回答