在实验中编写点的删除代码时,删除一点,要遍历所有的边,删除所有含该点的边。
我一开始的代码如下:
测试时出现错误:
查阅相关资料后发现,以该种方法遍历时,删除一条边,会使其在指向下一个元素的时候出现错误 ,抛出异常。
修改为使用迭代器进行遍历,迭代器的remove中,包含对游标的修正。Iterator是在一个单独的线程中工作的,他会记录集合中的状态,在使用remove对集合进行修改时,被记录的状态不会同步改变,所以在指向下一个元素时,不会出现找不到的错误。
在实验中编写点的删除代码时,删除一点,要遍历所有的边,删除所有含该点的边。
我一开始的代码如下:
测试时出现错误:
查阅相关资料后发现,以该种方法遍历时,删除一条边,会使其在指向下一个元素的时候出现错误 ,抛出异常。
修改为使用迭代器进行遍历,迭代器的remove中,包含对游标的修正。Iterator是在一个单独的线程中工作的,他会记录集合中的状态,在使用remove对集合进行修改时,被记录的状态不会同步改变,所以在指向下一个元素时,不会出现找不到的错误。