3

我正在尝试增加数组列表的大小,但它似乎不想工作。

我正在这样做:

    final int QUEUE_CAPACITY = 27;
    ArrayList adjacencyList = new ArrayList<Integer>(QUEUE_CAPACITY);

但是当我尝试使用具有两个参数的 add 添加一些东西时, (index,value) 我收到了这个错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
4

4 回答 4

2

您已经建立了 的初始容量ArrayList,但列表中仍然没有项目。如果索引 1 尚不存在,则不能在索引 1 之前插入该项目。

您必须使用单参数add方法追加到列表的末尾,或者在双参数方法0中提供作为索引,以便列表中有内容。add

于 2013-11-15T00:28:08.660 回答
2

好吧,如果你真的想这样做。

您需要使用 '0' 左右的 'Integers' 初始化数组,然后使用 set(int index, E element) 方法代替 add() 方法,该方法将此列表中指定位置的元素替换为指定元素.

您看到“0”的任何索引都相当于空。

于 2013-11-15T06:18:00.847 回答
0

你打电话相当于adjacencyList.add(1, 1)?如果是这样,您正在尝试添加到 index 处的空列表1,该列表不存在。只要打电话adjacencyList.add(<value>)

此外,在初始化时包含泛型类型:

ArrayList<Integer> adjacencyList = new ArrayList<Integer>(QUEUE_CAPACITY);

PS。您通常不需要调整 an 的初始容量,ArrayList除非您知道列表很少会变小。

于 2013-11-15T00:27:43.527 回答
0

这不是它的工作原理。

如果要在某个位置插入某些内容,则需要将元素存储到列表中的该点。

于 2013-11-15T00:27:52.933 回答