分页练习题

分页练习

今天做了一个分页练习题,如果有更好的办法欢迎讨论~~

在这里插入图片描述

 public String limit(List<String> areaA, List<String> areaB) {
        ArrayList<Page> pages = new ArrayList<>();
        int sizeA = areaA.size();
        int sizeB = areaB.size();
        //计算A,B总共有多少页
        int pageNumA=((sizeA-1)/6)+1;
        int pageNumB=((sizeB-1)/4)+1;
        int totalB=pageNumB;
        int totalA=pageNumA;
        //总页数
        int pageCount=(pageNumA>pageNumB)?pageNumA:pageNumB;

        int pageARemain=sizeA%6;//计算落到最后一页占的格子数
        int pageBRemain=sizeB%4;
        //通过map 循环出list
        HashMap<Integer, List<String>> hashMapA = new HashMap<>();
        HashMap<Integer, List<String>> hashMapB = new HashMap<>();
        //区域A
        for (int i=pageNumA; i >0 ; i--) {
            int index=(i-1)*6;//计算起始下标
            if (totalA==0){
                hashMapB.put(i,areaA);
            }else if (totalA>=0){
                if (pageARemain!=0){
                    int end=index+pageBRemain;
                    hashMapA.put(i,areaA.subList(index,end));
                }
                if (i==1){
                    hashMapA.put(i,areaA.subList(index,6));
                }
                if (i!=totalA){
                    hashMapA.put(i,areaA.subList(index,index+6));
                }

            }

        }
        //区域B
        for (int i=pageNumB; i >0 ; i--) {
            int index=(i-1)*4;//计算起始下标
            if (totalB==0){
                hashMapB.put(i,areaB);
            }else if (totalB>=0){
                if (pageBRemain!=0){
                    int   end=index+pageBRemain;
                    hashMapB.put(i,areaB.subList(index,end));
                }
                if (i==1){
                    hashMapB.put(i,areaB.subList(index,4));
                }
                if (i!=totalB){
                    hashMapB.put(i,areaB.subList(index,index+4));
                }

            }

        }

        for (int i = pageCount; i >0 ; i--) {
            System.out.println("第"+i+"页");
            for (int j = pageNumA; j > 0; j--) {
                System.out.println("A区域:"+hashMapA.get(i));
                break;
            }
            for (int j = pageNumB; j > 0; j--) {
                System.out.println("B区域:"+hashMapB.get(i));
                break;
            }
        }

        return "success";
    }

测试数据

public void limit() {
        List<String> stringA = new ArrayList<>();
        List<String> stringB = new ArrayList<>();

        stringA.add("一");
        stringA.add("二");
        stringA.add("三");
        stringA.add("四");
        stringA.add("五");
        stringA.add("六");
        stringA.add("七");


        stringB.add("a");
        stringB.add("b");
        stringB.add("c");
        stringB.add("d");

        stringB.add("e");
        stringB.add("f");
        stringB.add("g");
        stringB.add("h");

        stringB.add("i");
        stringB.add("j");
        stringB.add("k");
        stringB.add("l");

        stringB.add("m");

        String limit = carouselService.limit(stringA,stringB);
        System.out.println(limit);
    }

结果

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值