本文主要是介绍Java ArrayList add(index,element) 方法抛出Exception in thread main java.lang.IndexOutOfBoundsException,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
准备使用ArrayList 的 add(index,element) 来插入元素,天真的以为这样能给list排序,结果抛出:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
代码如下:
import java.util.ArrayList;
import java.util.List;public class TestQuene
{public static void main(String[] args) {List<Integer> list = new ArrayList<Integer>(50);list.add(0,0);list.add(2,2);list.add(1,1);}}
抛出异常:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
at java.util.ArrayList.rangeCheckForAdd(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at test.main.TestQuene.main(TestQuene.java:24)
编译运行之后抛出了exception,百思不得其解,等到看了源码之后才发现原因,ArrayList add(index,element)方法源码:
public void add(int index, E element) {if (index > size || index < 0)throw new IndexOutOfBoundsException("Index: "+index+", Size: "+size);ensureCapacity(size+1); // Increments modCount!!System.arraycopy(elementData, index, elementData, index + 1,size - index);elementData[index] = element;size++;
}
从代码中可以看出,当数组中的元素个数(size)小于index的时候,此方法是会抛出异常的。
所以此方法只适用于想要插入的位置小于数组中实际元素个数的时候才有作用。
也就是说,让list里面没有元素时,想通过插入元素到指定位置来达到排序的效果是不可行的。
这篇关于Java ArrayList add(index,element) 方法抛出Exception in thread main java.lang.IndexOutOfBoundsException的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!