zoukankan      html  css  js  c++  java
  • 开发中遇到的问题对数组的截取

    场景

    在一个接口请求中,可以传入多个参数,但是由于接口参数传参有限制,所以需要对接口参数进行分页处理,这里采取list下标索引截取的方式

    实例代码

    实现思路:
    首先根据类列表长度计算分页,如果刚好除尽,取整数;如果有余数,则页码加1;
    然后根据页码截取分段列表,判断起始索引和结束索引:
    起始页以末尾为0的整数作为fromIndex,toIndex为下一页的起始页,或列表的长度(列表长度不能除尽的时候);
    toIndex为下一页的起始页,或列表的长度的判断逻辑为:
    当取下一页数组索引大于当前列表长度的话,说明此时已翻到最后一页,所以取列表长度即可;
    否则是当下一页的索引<=当前列表长度,则toIndex取下一页起始页即可;

    此处容易引起怀疑的点在于toIndex的获取,由于数组索引是从零开始,而toIndex是比当前结束索引的值大1的,toIndex-fromIndex = size是当前要截取的长度,此处要考虑清除

    public class ListDemo {
        public static void testPage(){
            List<Integer> skuIdList = new ArrayList<>();
            for(int i=0;i<32;i++){
                skuIdList.add(i);
            }
            skuIdList.forEach(System.out::println);
            System.out.println("----------------------------------");
            int cycleSize = 30;
            //首先根据类列表长度计算分页,如果刚好除尽,取整数;如果有余数,则页码加1
            int cycle = skuIdList.size()%cycleSize==0?skuIdList.size()/cycleSize:skuIdList.size()/cycleSize+1;
    
            //此处我们开始对列表按页码进行截取,首先起始页以末尾为0的整数作为fromIndex,toIndex为下一页的起始页,或列表的长度(列表长度不能除尽的时候)
            for (int i=0;i<cycle;i++){
                int fromIndex = i*cycleSize;
                // 此时判断:当取下一页数组索引大于当前列表长度的话,说明此时已翻到最后一页,所以取列表长度即可;否则是当下一页的索引<=当前列表长度,则toIndex取下一页起始页即可;
                int toIndex = (i+1)*cycleSize>skuIdList.size()?skuIdList.size():(i+1)*cycleSize;
                System.out.println("fromIndex:"+fromIndex+"toIndex:"+toIndex);
                List<Integer> subList = skuIdList.subList(fromIndex,toIndex);
                System.out.println("subList size:"+subList.size());
                subList.forEach(System.out::println);
    
            }
        }
    
  • 相关阅读:
    Python之Numpy详细教程
    poj-1151-Atlantis-线段树求面积并
    hdu 5277 YJC counts stars
    webpack安装和配置
    算法——基础篇——高速排序
    nyoj914(二分搜索+贪心)
    Android图片旋转,缩放,位移,倾斜,对称完整演示样例(一)——imageView.setImageMatrix(matrix)和Matrix
    我是怎么利用微信做兼职月入1W的
    对象逆序列化报错:java.lang.ClassNotFoundException
    输入法之核心词典构建
  • 原文地址:https://www.cnblogs.com/nangonghui/p/15744103.html
Copyright © 2011-2022 走看看