背景:调用第三方api传入参数时,参数值最多30个,而本地参数值是多余30的,所以需要将list
按照固定长度截取子集,并将截取后的子集放到另外一个新list中,遍历新list发送请求即可:
1、参数list
List<String> staIDsList = new ArrayList<>();
staIDsList.add("54821");
staIDsList.add("54822");
staIDsList.add("54823");
staIDsList.add("54824");
List<List<String>> lists = new ArrayList<>();
subStaIDsList(staIDsList, lists,0);
2、截取list
public List<List<String>> subStaIDsList(List<String> strList, List<List<String>> strSubList,int n) {
if (strList.size() <= staIDsLenMax) {
strSubList.add(strList);
} else {
if(n<strList.size()){
int index=n;
index= index+staIDsLenMax>strList.size()?strList.size():n+staIDsLenMax;
strSubList.add(strList.subList(n,index));
subStaIDsList(strList, strSubList,index);
}
}
return strSubList;
}
3、subStaIDsList原函数是这样的:
public List<List<String>> subStaIDsList(List<String> strList, List<List<String>> strSubList) {
if (strList.size() <= staIDsLenMax) {
strSubList.add(strList);
} else {
strSubList.add(strList.subList(0, staIDsLenMax));
//运行报错 java.util.ConcurrentModificationException 后改为2操作的函数
strList.removeAll(strList.subList(0, staIDsLenMax));
subStaIDsList(strList,strSubList);
}
return strSubList;
}