在做分页查询时,定义一个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才对。
这个问题很奇怪。