• java分段加载数据,循环和递归两种方式


    package org.jimmy.autosearch2019.test;
    
    import java.util.ArrayList;
    
    public class Test20190328 {
    
        private static final ArrayList<String> allList = new ArrayList<String>();
        
        static {
            for(int i = 0; i < 1000; i++) {
                allList.add("test000000" + i);
            }
        }
        
        /**
         * @author ラピスラズリ(Dawn)
         * @date 2019年3月28日 下午2:16:57
         * @detail 
         */
        public static void main(String[] args) {
            System.out.println("循环方式每次获取10个对象:");
            ArrayList<String> list = getAllList(0, 10);
            for(int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
            System.out.println("循环方式每次获取100个对象:");
            list = getAllList(0, 100);
            for(int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
            System.out.println("循环方式每次获取1000个对象:");
            list = getAllList(0, 100);
            for(int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
            System.out.println("递归方式每次获取10个对象:");
            list = new ArrayList<String>();
            list = getAllList(0, 10, list);
            for(int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
            System.out.println("递归方式每次获取100个对象:");
            list = new ArrayList<String>();
            list = getAllList(0, 100, list);
            for(int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
            System.out.println("递归方式每次获取1000个对象:");
            list = new ArrayList<String>();
            list = getAllList(0, 1000, list);
            for(int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
        }
        
        /**
         * @author ラピスラズリ(Dawn)
         * @date 2019年3月28日 上午11:07:50
         * @detail 分段获取集合数据,pageIndex初始值为0,每次pageSize条,循环方式
         */
        public static ArrayList<String> getAllList(int pageIndex, int pageSize) {
            ArrayList<String> list = new ArrayList<String>(); 
            ArrayList<String> currentList = new ArrayList<String>();
            while((currentList = getStrList(pageIndex, pageSize)).size() != 0){
                list.addAll(currentList);
                pageIndex++;
            }
            return list;
        }
        
        /**
         * @author ラピスラズリ(Dawn)
         * @date 2019年3月28日 下午2:24:52
         * @detail 递归方式
         */
        public static ArrayList<String> getAllList(int pageIndex, int pageSize, ArrayList<String> list) {
            ArrayList<String> currentList = getStrList(pageIndex, pageSize);
            if(currentList != null && currentList.size() > 0) {
                list.addAll(currentList);
                pageIndex++;
                return getAllList(pageIndex, pageSize, list);
            }else {
                return list; 
            }
        }
        
        /**
         * @author ラピスラズリ(Dawn)
         * @date 2019年3月28日 下午2:13:09
         * @detail pageIndex初始值为0
         */
        public static ArrayList<String> getStrList(int pageIndex, int pageSize) {
            ArrayList<String> resultList = new ArrayList<String>();
            int beginIndex = pageIndex * pageSize;
            int endIndex = (pageIndex + 1) * pageSize - 1;
            if(endIndex > allList.size() - 1) {
                endIndex = allList.size() - 1;
            }
            for(int i = beginIndex; i <= endIndex; i++) {
                String currentStr = allList.get(i);
                resultList.add(currentStr);
            }
            return resultList;
        }
        
    }

    好了,效果图就不给了.

    2015年10月-2016年3月 总计:5个月.
    2016年11月-2017年6月 总计:7个月.
    2017年7月-2018年4月 总计:9个月.
    2018年5月-2018年5月 总计:1个月.
    2018年6月-2018年12月 总计:6个月.
    2019年1月-2019年12月 总计11个月.
    2020年2月-2021年2月 总计13个月.
    所有总计:5+7+9+1+6+11+13=52个月(4年4个月).
    本人认同二元论.我是理想主义者,现实主义者,乐观主义者,有一定的完美主义倾向.不过,一直都是咸鱼(菜鸟),就算有机会,我也不想咸鱼翻身.(并不矛盾,因为具体情况具体分析)
    英语,高等数学,考研,其他知识学习打卡交流QQ群:946556683
  • 相关阅读:
    Java SE
    Java SE
    Java SE
    Java SE
    Vocabulary: dockyard
    Vocabulary: Intercept
    Java SE
    MVG
    相关学习
    相机开发
  • 原文地址:https://www.cnblogs.com/JimmySeraph/p/10614964.html
Copyright © 2020-2023  润新知