了解Android中的Arraylist IndexOutOfBoundsException

我从我使用的任何Arraylist获得了很多IndexOutOfBoundsException 。 大多数时候它工作正常但有时我在我的项目中使用的Arraylists上遇到这个恼人的错误。

主要原因始终是

 java.util.ArrayList.throwIndexOutOfBoundsException: Invalid index 3, size is 3 

要么

 java.util.ArrayList.throwIndexOutOfBoundsException: Invalid index 0, size is 0 

帮助我理解这个错误的主要原因,因为无论我搜索了多少答案,他们都没有完全帮助我。

java.util.ArrayList.throwIndexOutOfBoundsException:索引3无效,大小为3

这意味着你有ArrayList,它有3个元素,你可以得到每个元素,如0,1,2位置。 并且您正在尝试读取ArrayList中不存在的第4个元素。

java.util.ArrayList.throwIndexOutOfBoundsException:索引0无效,大小为0

这意味着你有一个空的ArrayList,并且你正在尝试读取第一个元素。


ArrayIndexOutOfBoundsException – 示例

数组索引超出范围exception是由于程序试图访问数组限制之外的位置的元素而引发的Javaexception,因此单词“Out of bounds”。 换句话说,程序试图访问数组边界之外的索引处的元素。 要理解数组边界,让我们考虑下图:

在此处输入图像描述

上图包含一个由7个元素组成的数组。 数组中的每个元素都有自己的索引/位置。 在Java中,索引始终以0开头,并以数组-1的长度结束。 例如,上面的数组由7个元素组成,因此它的索引从0开始,以6(7-1)结束。 尝试访问索引小于0或大于6的元素将导致Java抛出ArrayIndexOutOfBoundsException。


阅读有关ArrayIndexOutOfBoundsException的更多信息– 示例,原因和修复

当您的ArrayList大小为3时,您可以访问位置0 1和2处的项目。如果您尝试访问位置3处的项目,它将抛出IndexOutOfBoundsException

所以当你遍历Arraylist时,你的for循环应该是这样的

 for(int i=0; i< list.size(); i++){ Object data = list.get(i); } 

你的条件必须是i< list.size()

这很简单。

java.util.ArrayList.throwIndexOutOfBoundsException:索引3无效,大小为3

它表示大小为3,您要求的索引也是3.数组列表以0开头,因此如果大小为3,则最大索引将为2。

 java.util.ArrayList.throwIndexOutOfBoundsException: Invalid index 3, size is 3 

这意味着你的arraylist size = 3,但你想在arraylist中访问index = 3。 你需要知道arraylist中的索引从0开始,这样如果你的arraylist size = 3意味着你可以像这样访问从0到2的索引

 arraylist.get(0) arraylist.get(1) arraylist.get(2) 

尺寸从1,2,3开始…..

索引计数从0,1,2开始….

当你的arry列表大小为1.你使用0索引获得值。 如果你发送索引值1.它抛出exception。