对arraylist中size大小的问题

时间:2023-02-05 16:49:11

在做分页查询时,定义一个List实例,

private List<Users> users = new ArrayList<Users>();

然后将数据装载到users 里面,

private Users user; 
while(it.hasNext()){
Object[] us = (Object[]) it.next();
Users uss = new CheckSell(
us[0]==null?"":ss[0].toString(),
us[1]==null?"":ss[1].toString(),
us[2]==null?"":ss[2].toString()
);
users.add(uss);
}

设置翻页后start和limit值:

List<Users> usersT;              
if((this.getStart()+2) < this.getTotalProperty()){
usersT = users.subList(this.getStart(), this.getStart()+2);
}else{
int limitT = this.getStart()+2;
limitT = limitT - this.getTotalProperty();
usersT = users.subList(this.getStart(), this.getStart()+2 - limitT);
}

发现系统报错:

java.lang.IndexOutOfBoundsException: toIndex = 3
at java.util.ArrayList.subListRangeCheck(ArrayList.java:962)
at java.util.ArrayList.subList(ArrayList.java:954)

其中toIndex = 3 ,这个我查了下,说是数组下界超标异常。
http://blog.163.com/wzx_dd/blog/static/19428507220121132315119/

我不大明白,检查了一下,并没检查出什么东西。于是我又看了这个函数subListRangeCheck,在类ArrayList中。于是发现:

if (toIndex > size)
throw new IndexOutOfBoundsException("toIndex = " + toIndex);

size的定义是:

int size = elementData.length;

也就是List中元素个数。我只有3条数据,每页2条数据。在第一页时,正常,当toIndex =3的时候,就报出异常了。size的值应该一直是3才对。
这个问题很奇怪。