int listSize=listviz.size();//总数据量
int toIndex=800;//每次操作数
int count=listSize/toIndex;
if (listSize%toIndex!=0){
count+=1;
}
System.out.println("总数据量:"+listSize);
System.out.println("循环次数:"+count);
for (int i = 0; i < count; i++) {
List<DocInfo> newlist;
if (i==count-1){
System.out.println("处理间距:"+toIndex*i+","+listSize);
newlist = listviz.subList(toIndex*i,listSize-1);
}
else {
System.out.println("处理间距:"+toIndex*i+","+toIndex*(i+1));
newlist = listviz.subList(toIndex*i,(toIndex*(i+1)-1));
}
}
日志显示
原型:List subList(int fromIndex,int toIndex) — 截取部分 list
.
包含下标为 fromIndex的元素,不包含下标为toIndex的元素
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Yolo");
list.add("Java");
list.add(2,"Yolo");
System.out.println(list);
System.out.println(list.subList(0, 2));
}
输出结果:
针对List的subList方法报超出索引大小的异常,可能是因为subList方法的参数范围设定不正确。具体来说,subList方法的第二个参数表示的是截取子列表时的结束位置,但是它实际上是开区间,也就是说,结果并不包含该结束位置所对应的元素。如果结束位置参数过大,超出了List本身的索引大小范围,就会抛出索引越界异常。因此,可以通过调整结束位置的参数来避免这种异常情况的发生。具体来说,需要确保结束位置参数小于等于List的长度,并且合理地选择起始和结束位置的值,以满足具体业务需求。下面是一个参考代码,演示如何使用subList方法快速截取列表的子列:
import java.util.ArrayList;
import java.util.List;
public class TestSubList {
public static void main(String[] args) {
List<Integer> originalList = new ArrayList<>();
originalList.add(1);
originalList.add(2);
originalList.add(3);
originalList.add(4);
originalList.add(5);
//确定起始和结束位置,可以根据具体需求进行调整
int startIndex = 0;
int endIndex = 2;
//确保结束位置不超出List本身的索引范围
endIndex = Math.min(endIndex, originalList.size());
//使用subList方法截取子列
List<Integer> subList = originalList.subList(startIndex, endIndex);
//输出截取的结果
System.out.println(subList.toString());
}
}
上述代码中,我们首先定义了一个原始的列表originalList,然后根据具体需求选择起始和结束位置的值。为了确保结束位置参数不超出原始列表本身的索引范围,我们使用了Math.min方法对其进行了调整。最终,通过调用subList方法,得到了指定范围内的子列,并打印输出到控制台。
检查运行了你的代码 没有问题,这个错误看着像是数据库操作的问题,检查下你的字段数量
你debug 看下 这一行,然后进去看下 实际的比较情况,立马就知道了