纯属个人理解,跪求路过大佬评论区更正
首先看报错代码,报错位置位于it1.remove();
import java.sql.Array;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> arraylist1 = new ArrayList<>();
arraylist1.add(9);
arraylist1.add(10);
arraylist1.add(8);
Iterator<Integer> it = arraylist1.iterator();
while(it.hasNext()){
System.out.print(it.next() + " ");
System.out.println();
}
ListIterator<Integer> it1= arraylist1.listIterator();
while(it1.hasNext()){
//System.out.print(it1.next() + " ");
//it1.next();
//使用remove方法时上面一定要出现it1.next()方法
//个人理解是it1.next()使得当前操作的数为集合中实际存在的数
it1.remove();
}
System.out.println(arraylist1.size());
}
}
运行结果如下:
通过分析需要在
it1.remove();
前加入代码it1.next();
个人理解是因为初始迭代器it1操作(指向)的数并非集合中的元素,而是集合元素中第一位再上一位元素,
it1.next();
使得当前操作的数为集合中实际存在的数
纯属个人理解,跪求路过大佬评论区更正
修改后代码如下:
import java.sql.Array;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> arraylist1 = new ArrayList<>();
arraylist1.add(9);
arraylist1.add(10);
arraylist1.add(8);
Iterator<Integer> it = arraylist1.iterator();
while(it.hasNext()){
System.out.print(it.next() + " ");
System.out.println();
}
ListIterator<Integer> it1= arraylist1.listIterator();
while(it1.hasNext()){
//System.out.print(it1.next() + " ");
it1.next();
//使用remove方法时上面一定要出现it1.next()方法
//个人理解是it1.next()使得当前操作的数为集合中实际存在的数
it1.remove();
}
System.out.println(arraylist1.size());
}
}
纯属个人理解,跪求路过大佬评论区更正