首页 > 试题广场 >

以下关于List删除方法使用错误的是()

[单选题]

以下关于List删除方法使用错误的是()

  • list循环外指定index删除:list.remove(i);
  • list循环外指定元素删除:list.remove(obj);
  • for(Object obj:list){list.remove(obj);}
  • for(Iterator it= list.iterator();it.hasNext();){it.next();it.remove();}
使用foreach遍历时删除会报异常,使用迭代器进行迭代时则不会报异常
发表于 2020-02-09 20:47:50 回复(0)
foreach遍历集合中一般针对查询,没有删除remove()方法
发表于 2019-10-17 21:33:27 回复(0)
增强循环其实就是个迭代器的封装。List维护了一个变量modcount修改次数,包括集合的内部结构的更改(set、add、remove),都会是modcount+1;迭代器中维护了一个变量expectedmodcount,它的初始值是expectedmodcount=modcount。迭代器不允许你在我迭代数据的时候受到修改集合的干扰,确实是这样,不然遍历出来的数据就不符合逻辑了。所以迭代器设计了一个checkForComodification()方法来检测
final void checkForComodification() {
            if (modCount != expectedModCount)
                throw new ConcurrentModificationException();
        }
该方法在迭代器的next()中被调用。一旦modCount != expectedModCount,就ConcurrentModificationException报错
要修改也必须是迭代器自己修改,因为迭代器在修改完后会重置expectedmodcount=modcount。
编辑于 2019-10-17 16:03:20 回复(0)
可能是不能一边查,一边删吧!可能会造成危险吧!
发表于 2019-10-19 23:02:07 回复(0)
遍历的时候remove会抛异常,每次进行set、add、remove时会将一个操作数加一,
下次遍历时会检测这个操作数有没有变化,有变化就抛异常。解决方法是用Iterator的remove方法
编辑于 2019-12-13 16:46:45 回复(0)
循环外可以顺便删,循环内遍历可以倒序删不能正序删,迭代器可以一遍迭代一遍删
发表于 2019-11-10 14:47:31 回复(0)
list.remove(Object)
list.remove(index)
方法都有
发表于 2019-11-07 10:37:26 回复(0)
是不是C选项只能遍历 不能其他操作
发表于 2019-10-21 10:29:01 回复(0)
why not?
发表于 2019-10-16 15:16:55 回复(1)

foreach只能查询数据不能增删吧

发表于 2019-10-16 06:28:03 回复(0)