java实现100分页,相同数组内不分页

最近有个分页需求,根据合同找商品,同时相同合同的商品不能分页展示,还不能超过100。

在写逻辑之前,我先在主函数中试了一下,具体如下,一开始只写了分页返回的是一个数字的list,后面还需要对合同进行拆分来显示,所以返回的变成了一个map的list。

public static void main(String[] args) {

        //2、大于100的处理
        List<Integer> contractProdCountList = new ArrayList<>();
        contractProdCountList.add(52);
        contractProdCountList.add(26);
        contractProdCountList.add(12);
        contractProdCountList.add(8);
        contractProdCountList.add(80);
        contractProdCountList.add(78);
        contractProdCountList.add(79);
        contractProdCountList.add(81);
        contractProdCountList.add(82);
        contractProdCountList.add(83);
        contractProdCountList.add(84);
        contractProdCountList.add(15);
        contractProdCountList.add(16);
        contractProdCountList.add(26);
        contractProdCountList.add(36);
        contractProdCountList.add(46);
        contractProdCountList.add(22);
        contractProdCountList.add(6);



        List<Map<String, Object>> contractProdArray= new ArrayList<Map<String, Object>>();
        int batchBuyContractProdCount = 0;
        int page = 0;
        //定义分页的数组
        List<Integer> pageContractCountList=new ArrayList<>();
        for(int i=0;i<contractProdCountList.size();i++){
            HashMap<String, Object> map = new LinkedHashMap<String, Object>();
            Integer batchBuyContractProdCountDto = contractProdCountList.get(i);
            pageContractCountList.add(batchBuyContractProdCountDto);
            batchBuyContractProdCount += batchBuyContractProdCountDto;
            if(batchBuyContractProdCount>100){
                page++;
                int pageSize = batchBuyContractProdCount-batchBuyContractProdCountDto;
                pageContractCountList.remove( pageContractCountList.get(pageContractCountList.size()-1));
                map.put("page",page);
                map.put("pageSize",pageSize);
                map.put("pageContractCountList",pageContractCountList);
                contractProdArray.add(map);
                batchBuyContractProdCount = 0;
                pageContractCountList = new ArrayList<>();
                i--;
                continue;
            }
            //最后一个加完也不到100的情况下,直接返回
            System.out.println("i:"+i);
            if(i+1 == contractProdCountList.size()){
                page++;
                int pageSize = batchBuyContractProdCount;
                map.put("page",page);
                map.put("pageSize",pageSize);
                map.put("pageContractCountList",pageContractCountList);
                contractProdArray.add(map);
            }

        }
        System.out.println("ContractProdArray.toArray():"+Arrays.toString(contractProdArray.toArray()));

        //合同商品列表循环的数据开始行数
        int pageContractProdCountAdd = 0;
        int totalPageSize = contractProdArray.size();
        List<Integer> pageContractCountList1=new ArrayList<>();
        for (int i = 0; i < contractProdArray.size(); i++) {
            Map<String, Object> map = contractProdArray.get(i);
            int page1 = (int)map.get("page");
            int pageSize = (int)map.get("pageSize");
            pageContractCountList1 = JSON.parseObject(JSON.toJSONString(map.get("pageContractCountList")),List.class) ;
            System.out.println("page1:"+page1);
            System.out.println("pageSize:"+pageSize);
            System.out.println("pageContractCountList:"+Arrays.toString(pageContractCountList1.toArray()));


        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值