首先这个是为了实现一次请求的数据量不会由于返回的数据量过大导致内存溢出,所以分批获取
@SuppressWarnings("unused")
public static List<String> getList(int targ,List<String> mList) {
List<String> idsStrList = new ArrayList<String>();
List<List<String>>mEndList=new ArrayList<>();
// System.out.println(mList.toString());
if( mList.size()%targ!=0) {
for (int j = 0; j < mList.size() / targ + 1; j++) {
if ((j * targ + targ) < mList.size()) {
mEndList.add(mList.subList(j * targ, j * targ + targ));//0-3,4-7,8-11 j=0,j+3=3 j=j*3+1
} else if ((j * targ + targ) > mList.size()) {
mEndList.add(mList.subList(j * targ, mList.size()));
} else if (mList.size() < targ) {
mEndList.add(mList.subList(0, mList.size()));
}
}
}else if(mList.size()%targ==0){
for (int j = 0; j < mList.size() / targ; j++) {
if ((j * targ + targ) <= mList.size()) {
mEndList.add(mList.subList(j * targ, j * targ + targ));//0-3,4-7,8-11 j=0,j+3=3 j=j*3+1
} else if ((j * targ+ targ) > mList.size()) {
mEndList.add(mList.subList(j * targ, mList.size()));
} else if (mList.size() < targ) {
mEndList.add(mList.subList(0, mList.size()));
}
}
}
// for (int i = 0; i < mEndList.size(); i++) {
// log.info(mEndList.get(i).toString()+"");
// }
for (List<String> list : mEndList) {
String idsStr = "";
for (String string : list) {
idsStr = idsStr + string + ",";
}
idsStrList.add(idsStr);
}
return idsStrList;
}
public static void main(String[] args) {
List<String> strList = new ArrayList<String>();
for (int i = 0; i < 1000000; i++) {
strList.add("ids"+i);
}
long startTime = System.currentTimeMillis();
System.out.println(startTime);
List<String> list = getList(20,strList);
long endTime = System.currentTimeMillis();
System.out.println("第一个20个任务:"+list.get(0));
System.out.println("总共耗时:"+(endTime - startTime) );
}