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;
    }
    
}

好了,效果图就不给了.

posted @ 2019-03-28 14:52  ラピスラズリ(Dawn)  阅读(688)  评论(0编辑  收藏  举报