操作list时报:java.util.ConcurrentModificationException

本文介绍了一种当需要调用第三方API且参数数量超过限制时,如何将参数列表按固定长度拆分成多个子列表的方法。通过递归函数实现参数的分批处理,确保每次调用都不会超出API的参数限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:调用第三方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;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值