看下面问题:
LinkedList a=new LinkedList();
a.add(1);
a.add(2);
// for(int i=0;i<a.size();i++)
// {System.out.println(a.get(i));}
int num=a.size();
for(int i=0;i<num;i++)
{
a.remove(i);
System.out.println("a.size:"+a.size());
}
error:
a.size:1
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.LinkedList.checkElementIndex(LinkedList.java:553)
at java.util.LinkedList.remove(LinkedList.java:523)
at TestindexRemove.main(TestindexRemove.java:18)
原因是:a.remove(0);后size变化了,第二次循环a.remove(1);就报错了
解决方式:a.remove()每次都从头删除节点,这只针对LinkedList才有,arrayList没有remove()方法
注意:remove(i)索引从0开始