请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答

5回答

Jimin 2018-04-28 17:43:47

https://img1.sycdn.imooc.com//szimg/5ae441f80001e81b14340845.jpg

我重新运行了一下也是和预期一致的

你再确认一下你是测试的test2方法,当前这个代码应该是肯定有问题的

0 回复 有任何疑惑可以回复我~
  • 提问者 黎明的烬 #1
    老师你只添加了三个元素,当i等于3的时候,vector元素至少有4个,不然根本没有删除操作,我把元素加到4机会报错:Exception in thread "main" java.util.ConcurrentModificationException
    回复 有任何疑惑可以回复我~ 2018-04-28 18:33:24
  • Jimin 回复 提问者 黎明的烬 #2
    能验证这个方法会造成异常就算达到目的了。不过我看你的注释稍微有点问题,不是不可以在iterator遍历时做删除,换种写法是可以的,只是这种写法会有问题
    回复 有任何疑惑可以回复我~ 2018-04-28 19:05:43
风洛洛 2018-11-18 16:09:30

使用 iterator 迭代器的话, 调用remove是可以正常删除的。
老师这里讲的是为了 讲容器在动态遍历过程中,不能对原容器使用remove操作。

着重点不太一样。

0 回复 有任何疑惑可以回复我~
xiaocui_0001 2018-09-28 20:23:12

test2 方法如果使用iterator.remove(); 就没有问题 但是如果直接删除的vector的话就会抛出异常。

0 回复 有任何疑惑可以回复我~
提问者 黎明的烬 2018-04-28 17:36:31

https://img1.sycdn.imooc.com//szimg/5ae440940001db7711380781.jpg老师请看

0 回复 有任何疑惑可以回复我~
  • 兄弟 你的vector添加的元素是132 老师的是123。
    132不报错是因为当test2方法迭代到第二个元素3时候,
    这时候删除元素,当前内部迭代器里的cursor(迭代器指针)的位置在2
    而当前集合的elementCount(集合元素数量)也是2.
    所以迭代器hasNext()执行返回false,
    所以132的顺序在while循环里只执行两次就结束了。
    而123的顺序却要执行4次,
    因为在第三次的时候remove操作会改变elementCount的值为2,
    但是当前cursor=3 hasNext判断二者不相等,
    错误的认为还有元素,执行it.next()方法的时候会先执行checkForComodification方法 就会报错了。
    回复 有任何疑惑可以回复我~ 2020-04-17 09:13:57
Jimin 2018-04-28 16:25:04

你好,发出你的代码来看看

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号