remove方法在List接口迭代器中抛出错误

时间:2017-09-13 01:49:29

标签: java iterator

我正在尝试使用删除方法,但是因为我不断收到错误而导致我搞砸了:

 List<String> list1 = new ArrayList<String>();
      list1.add("Apple");
      list1.add("Bus");
      list1.add("Cat");
      list1.add("Dog");
      String ne = list1.listIterator().next();
System.out.println(ne);
list1.listIterator().remove();

remove语句会抛出错误吗?谁能告诉我为什么? 当我只使用iterator代替listIterator时会发生同样的事情吗?

1 个答案:

答案 0 :(得分:3)

您的代码是正确的,因为每次调用ListIterator#remove()时,您都可以拨打next()一次(请参阅Javadoc)。但是,在您的代码中,您实际上是在 new 列表迭代器上调用remove(),而不是之前使用的那个。{1}}。尝试下面的代码,希望你明白你做错了什么:

List<String> list1 = new ArrayList<String>();
list1.add("Apple");
list1.add("Bus");
list1.add("Cat");
list1.add("Dog");
// retain a reference to the same list iterator
ListIterator<String> list1itr = list1.listIterator();
String ne = list1itr.next();
System.out.println(ne);
list1itr.remove();

Demo